题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4548

解题报告:一开始本想先打个素数表,然后每次输入L 跟R 的时候都进行暴力判断,但这题测试数据太多,有1W ,这样就达到10^10级别了,很明显不能过,但是,我后来一想,数状数组不就是用来解决区间问题的吗,顿时焕然大吾。我的做法就是先打个1到1000000的素数表,然后暴力判断从1到1000000每个数是不是美素数,同时把结果存到数状数组里面去。这样就可以实现存完了就可以实现快速查找了。

 #include<cstdio>
#include<cstring>
#include<iostream>
#include<cmath> const int maxn = ; int prim[maxn+],tree[maxn+]; void dabiao()
{
memset(prim,,sizeof(prim));
prim[] = ;
for(int i = ;i <= maxn;i += )
prim[i] = ;
int M = sqrt(maxn);
for(int i = ;i <= M;++i)
if(prim[i] == )
for(int j = i*i;j<=maxn;j+=i)
prim[j] = ;
} int judge(int n)
{
int sum = ;
while(n)
{
sum += n%;
n /= ;
}
return sum;
} void add(int n)
{
if(n > maxn)
return ;
for(int i = n;i <= maxn;i += (i&-i))
tree[i]++;
}
void dabiao2()
{
memset(tree,,sizeof(tree));
for(int i = ;i <= maxn;++i)
if(!prim[i] && !prim[judge(i)])
add(i);
} int sum(int L,int R)
{
int tot1 = ,tot2 = ;
for(int i = L-;i >= ; i -= (i&-i))
tot1 += tree[i];
for(int i = R;i >= ;i -= (i&-i))
tot2 += tree[i];
return tot2 - tot1;
} int main()
{
dabiao();
dabiao2();
int T,L,R,l = ;
scanf("%d",&T);
while(T--)
{
scanf("%d %d",&L,&R);
printf("Case #%d: %d\n",l++,sum(L,R));
}
return ;
}

HDU 4548 美素数 在线打表加数状数组的更多相关文章

  1. HDU 4548 美素数(打表)

    HDU  4548  美素数(打表)解题报告 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=88159#problem/H 题目 ...

  2. HDU 4548(美素数)

    Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u   Description 小明对数的 ...

  3. HDU 4548 美素数 素数题解

    本题就是能够直接打表的,推断能否够打表也须要技巧的: 1 推断最大的数值为1000000.百万下面的数打表都是能够的 2 能够线性预处理好.使用素数筛子法是能够接近线性预处理的. 故此能够打表了. 须 ...

  4. hdu 4548 美素数 超级大水题

    美素数 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Total Submis ...

  5. hdoj 4548 美素数 【打表】

    另类打表:将从1到n的满足美素数条件的数目赋值给prime[n],这样最后仅仅须要用prime[L]减去prime[R-1]就可以: 美素数 Time Limit: 3000/1000 MS (Jav ...

  6. HDU 4548 美素数

    Description 小明对数的研究比较热爱,一谈到数,脑子里就涌现出好多数的问题,今天,小明想考考你对素数的认识.  问题是这样的:一个十进制数,如果是素数,而且它的各位数字和也是素数,则称之为“ ...

  7. st表树状数组入门题单

    预备知识 st表(Sparse Table) 主要用来解决区间最值问题(RMQ)以及维护区间的各种性质(比如维护一段区间的最大公约数). 树状数组 单点更新 数组前缀和的查询 拓展:原数组是差分数组时 ...

  8. hdu 6200 mustedge mustedge(并查集+树状数组 或者 LCT 缩点)

    hdu 6200 mustedge mustedge(并查集+树状数组 或者 LCT 缩点) 题意: 给一张无向连通图,有两种操作 1 u v 加一条边(u,v) 2 u v 计算u到v路径上桥的个数 ...

  9. 杭电(hdu)ACM 4548 美素数

    美素数 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Total Submis ...

随机推荐

  1. PAT 1068 万绿丛中一点红

    https://pintia.cn/problem-sets/994805260223102976/problems/994805265579229184 对于计算机而言,颜色不过是像素点对应的一个 ...

  2. 安装iproute2

    yum install -y gcc bison flex #tar -xzf  iproute2-3.17.0.tar.gz #cd iproute2-3.17.0#sed -i '/^TARGET ...

  3. autoboxing and unboxing

    Why does 128==128 return false but 127==127 return true public static void autoboxingUnboxing(){ Int ...

  4. python杂谈:Python中\r的用法示例

    \r 默认表示将输出的内容返回到第一个指针,这样的话,后面的内容会覆盖前面的内容 import sys import time def view_bar(num,total): rate = floa ...

  5. BZOJ5212 ZJOI2018历史(LCT)

    首先相当于最大化access的轻重边交换次数. 考虑每个点作为战场(而不是每个点所代表的国家与其他国家交战)对答案的贡献,显然每次产生贡献都是该点的子树内(包括自身)此次access的点与上次acce ...

  6. [洛谷P4705]玩游戏

    题目大意:对于每个$k\in[1,t]$,求:$$\dfrac{\sum\limits_{i=1}^n\sum\limits_{j=1}^m(a_i+b_j)^k}{nm}$$$n,m,t\leqsl ...

  7. 【BZOJ2463】谁能赢呢?(博弈论)

    [BZOJ2463]谁能赢呢?(博弈论) 题面 BZOJ 洛谷 题解 洛谷上对于难度的评级我总觉有些问题. 很多人按照代码难度而并非思维难度在评级,导致很多评级很不合理啊... 不说废话了.. 对于一 ...

  8. 洛谷 P1685 游览 解题报告

    P1685 游览 题目描述 顺利通过了黄药师的考验,下面就可以尽情游览桃花岛了! 你要从桃花岛的西头开始一直玩到东头,然后在东头的码头离开.可是当你游玩了一次后,发现桃花岛的景色实在是非常的美丽!!! ...

  9. 【uoj131】 NOI2015—品酒大会

    http://uoj.ac/problem/131 (题目链接) 题意 给出一个字符串,每个后缀有一个权值${a_i}$,这些后缀两两之间存在公共前缀.问能够组成长度从0~n-1的公共前缀的后缀的方案 ...

  10. linux内核分析 第六周 分析Linux内核创建一个新进程的过程

    进程的描述 操作系统的三大管理功能:进程管理.内存管理.文件系统 为了管理进程,内核必须对每个进程进行清晰的描述,进程描述符提供了内核所需了解的进程信息. 进程控制块PCB task_struct:进 ...