美素数

Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)

Total Submission(s): 4482    Accepted Submission(s): 1524

Problem Description
  小明对数的研究比較热爱,一谈到数。脑子里就涌现出好多数的问题,今天。小明想考考你对素数的认识。

  问题是这种:一个十进制数。假设是素数,并且它的各位数字和也是素数,则称之为“美素数”,如29,本身是素数,并且2+9 = 11也是素数,所以它是美素数。

  给定一个区间,你能计算出这个区间内有多少个美素数吗?

 
Input
第一行输入一个正整数T,表示总共同拥有T组数据(T <= 10000)。

接下来共T行,每行输入两个整数L,R(1<= L <= R <= 1000000),表示区间的左值和右值。
 
Output
对于每组数据,先输出Case数,然后输出区间内美素数的个数(包含端点值L,R)。

每组数据占一行,详细输出格式參见例子。

 
Sample Input
3
1 100
2 2
3 19
 
Sample Output
Case #1: 14
Case #2: 1
Case #3: 4

若用普通的求素数方法求解这道题目。毫无疑问会超时的,本题用的是素数筛选,将素数打表,时间复杂度大大减少。还有须要注意的是在求美素数的过程中,不能改变原始素数数组的初始值。这就要求我们再定义一个数组来存取素数,另外,我在做这道题目的时候还使用了动态规划的思想。来存取区间的美素数的个数,为了方便读者理解,我将功能分成了子函数。
代码例如以下:
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std; bool prime[1000001];
bool beauty[1000001];
int dp[1000001]; void findprime()
{
memset(prime,true,sizeof(prime));
memset(beauty,true,sizeof(beauty));
prime[0]=prime[1]=false;
beauty[0]=beauty[1]=false;
for(int i=2;i<=1000;i++) //素数筛选法核心代码区
{
for(int j=2*i;j<=1000000;j+=i)
{
prime[j]=false;
beauty[j]=false;
}
} //素数筛选法核心代码区
} void beautyprime()
{
int sum,k;
for(int i=2;i<=1000000;i++)
{
sum=0;k=i;
if(prime[i]==true)
{
while(k!=0)
{
sum+=k%10;
k/=10;
}
if(prime[sum]!=true)
{
beauty[i]=false;
}
}
}
} void DP() //动态规划思想,dp[i]即1到i素数的个数
{
memset(dp,0,sizeof(dp));
for(int i=1;i<=1000000;i++)
{
if(beauty[i]==true)
{
dp[i]=dp[i-1]+1;
}
else dp[i]=dp[i-1];
}
} int main()
{
int a,b,T,_count;
findprime();
beautyprime();
DP();
while(scanf("%d",&T)!=EOF)
{
_count=0;
while(T--)
{
_count++;
scanf("%d%d",&a,&b);
printf("Case #%d: %d\n",_count,dp[b]-dp[a-1]);
}
}
return 0;
}

杭电(hdu)ACM 4548 美素数的更多相关文章

  1. 杭电 HDU ACM 2795 Billboard(线段树伪装版)

    Billboard Time Limit: 20000/8000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  2. 杭电 HDU ACM Milk

    Milk Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  3. 杭电 HDU ACM 1698 Just a Hook(线段树 区间更新 延迟标记)

    欢迎"热爱编程"的高考少年--报考杭州电子科技大学计算机学院 Just a Hook Time Limit: 4000/2000 MS (Java/Others)    Memor ...

  4. HDU 4548 美素数(打表)

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

  5. HDU 4548 美素数 在线打表加数状数组

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4548 解题报告:一开始本想先打个素数表,然后每次输入L 跟R 的时候都进行暴力判断,但这题测试数据太多 ...

  6. HDU 4548 美素数

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

  7. HDU 4548(美素数)

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

  8. HDU 4548 美素数 素数题解

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

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

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

随机推荐

  1. [ASP.Net] MVC2,3,4,5的不同

    现在MVC的技术日趋成熟,面对着不同版本的MVC大家不免有所迷惑 -- 它们之间有什么不同呢?下面我把我搜集的信息汇总一下,以便大家能更好的认识不同版本MVC的功能,也便于自己查阅. View Eng ...

  2. 虚拟机CentOS设置IP

    虚拟机里Centos7的IP地址查看方法 本地虚拟机安装了CentOS 7,想通过ftp上传文件,发现通过ifconfig,没有inet这个属性 查看ens33网卡的配置:vi /etc/syscon ...

  3. 26. Remove Duplicates from Sorted Array[E]删除排序数组中的重复项

    题目 Given a sorted array nums, remove the duplicates in-place such that each element appear only once ...

  4. mysqls,为node.js而编写的sql语句生成插件 (crud for mysql).

    It is written in JavaScript,crud for mysql.You can also use transactions very easily. mysqls 一款专为nod ...

  5. vmware笔试题目

    http://discuss.acmcoder.com/topic/58db8e2ebb0f44ba0e94e670 上面是完整的题目,下面一下我自己的想法. http://discuss.acmco ...

  6. ios - masonry第三方库使用自动布局(参考:http://www.cocoachina.com/ios/20141219/10702.html)

    #import "ViewController.h" #import "Masonry.h" #define kWeakSelf(weakSelf) __wea ...

  7. 破解VIP会员视频集合

    浏览器安装暴力猴扩展即可使用 // ==UserScript== // @name 破解VIP会员视频集合 // @namespace https://greasyfork.org/zh-CN/use ...

  8. TD中INPUT的宽度设置

    最近在用C#做Web程序时,碰到一个问题: 将TextBox的asp控件放在Table中的TD里面时,不设置宽度,自动会将TD撑的很大. 查看运行后页面的源代码发现,其实TextBox控件最终在客户端 ...

  9. C# 5.0新加特性

    1. 异步编程 在.Net 4.5中,通过async和await两个关键字,引入了一种新的基于任务的异步编程模型(TAP).在这种方式下,可以通过类似同步方式编写异步代码,极大简化了异步编程模型.如下 ...

  10. 从ReadImage到ML- 一个不错的博客

    实在对不起原作者,为了不把文章淹没在 转载的海洋里.... 原文链接:     http://www.cnblogs.com/tornadomeet/archive/2012/09/26/270404 ...