2013金山西山居创意游戏程序挑战赛——初赛(2) A 美素数(hdu 4548)
2013-05-19 19:42
459 查看
http://acm.hdu.edu.cn/showproblem.php?pid=4548
题意:所谓美素数就是指的其本身是素数且其十进制各位数之和也为素数的数,现在问你区间[l,r]内有多少个美素数。
因为数据量很小,所以直接暴力就行,素数打表暴力枚举每个数看是否是美素数,维护一个数组a[i]表示区间[1,i]之间的美素数的个数,然后就不用说了吧,对于输入x,y,输出a[y]-a[x-1]即可。
代码如下:
题意:所谓美素数就是指的其本身是素数且其十进制各位数之和也为素数的数,现在问你区间[l,r]内有多少个美素数。
因为数据量很小,所以直接暴力就行,素数打表暴力枚举每个数看是否是美素数,维护一个数组a[i]表示区间[1,i]之间的美素数的个数,然后就不用说了吧,对于输入x,y,输出a[y]-a[x-1]即可。
代码如下:
#include <iostream> #include <string.h> #include <stdio.h> #include <algorithm> #define maxn 1000000 using namespace std; int p[maxn+10]; void prime() { memset(p,0,sizeof(p)); int i=0,sum=0,x=0; p[0]=1; p[1]=1; for(i=2;i<=maxn;i++) { sum=i; x=2; if(p[sum]==1) continue; sum=i*x; while(sum<=maxn) { p[sum]=1; x++; sum=i*x; } } } int sum[maxn+10]; int check(int x) { int tmp=0; while(x) { tmp+=x%10; x/=10; } if(!p[tmp]) return 1; return 0; } int main() { // freopen("dd.txt","r",stdin); prime(); sum[1]=sum[0]=0; for(int i=2;i<=maxn;i++) { if(!p[i]&&check(i)) sum[i]=sum[i-1]+1; else sum[i]=sum[i-1]; } int ncase,time=0; scanf("%d",&ncase); while(ncase--) { int a,b; scanf("%d%d",&a,&b); printf("Case #%d: %d\n",++time,sum[b]-sum[a-1]); } return 0; }
相关文章推荐
- 2013金山西山居创意游戏程序挑战赛——初赛(2) A 美素数(hdu 4548)
- 2013金山西山居创意游戏程序挑战赛——初赛(2)hdu 4548 4549 4550
- 2013金山西山居创意游戏程序挑战赛——初赛(3) 1001 生日猜猜猜 hdu 4551
- 2013金山西山居创意游戏程序挑战赛——初赛(2) B M斐波那契数 (hdu 4549 )
- hdu 4545 魔法串 2013金山西山居创意游戏程序挑战赛——初赛(1)
- 2013金山西山居创意游戏程序挑战赛——初赛(2) C 卡片游戏 (hdu 4550 )
- 2013金山西山居创意游戏程序挑战赛——初赛(2) B M斐波那契数 (hdu 4549 )
- HDU 4547 CD操作 2013金山西山居创意游戏程序挑战赛——初赛(1)
- 2013金山西山居创意游戏程序挑战赛——初赛(4)
- 2013金山西山居创意游戏程序挑战赛——初赛(2)M斐波那契数列
- 2013金山西山居创意游戏程序挑战赛——初赛(1) C CD操作
- 2013金山西山居创意游戏程序挑战赛——初赛(1) A 魔法串
- 2013金山西山居创意游戏程序挑战赛——复赛(1) HDU 4557 非诚勿扰 HDU 4558 剑侠情缘 HDU 4559 涂色游戏 HDU 4560 我是歌手
- 2013金山西山居创意游戏程序挑战赛——初赛(1)
- 2013金山西山居创意游戏程序挑战赛——初赛(1)题解
- 2013金山西山居创意游戏程序挑战赛——初赛(1)
- 2013金山西山居创意游戏程序挑战赛——初赛(1) A 魔法串
- 2013金山西山居创意游戏程序挑战赛——初赛(4) 叛逆的小明
- 分子函数2013金山西山居创意游戏程序挑战赛——初赛(4)
- 2013金山西山居创意游戏程序挑战赛——初赛(1) 魔法串