HDU 4548 美素数 素数题解
本题就是能够直接打表的,推断能否够打表也须要技巧的:
1 推断最大的数值为1000000。百万下面的数打表都是能够的
2 能够线性预处理好。使用素数筛子法是能够接近线性预处理的。
故此能够打表了。
须要熟悉的基本知识点:
1 素数筛子法 - 一两分钟之内写出代码
2 一般素数推断法,由于位数相加之后的数值很小,故此一般素数推断就能够了,假设写个primality test 算法会大材小用了。
3 然后是带点动态规划法的思想把前面的美素数叠加起来,方便查找。
算是基础题目了,也是有人说的水题,我还是喜欢叫基础题吧。
难在于推断好,并运用好这些基础知识。简单优雅地解决,写出代码。
#include <stdio.h>
#include <string.h>const int MAX_N = 1000001;
bool isPrime(int n)
{if (n == 2) return true;for (int r = 2; r * r <= n; r++){if (n % r == 0) return false;}return true;
}bool isMeiPrime(int n)
{int d = 0;while (n){d += n % 10;n /= 10;}return isPrime(d);
}int primeNums[MAX_N];
bool primes[MAX_N];void seive()
{memset(primes, 0, MAX_N * sizeof(bool));for (int i = 2; i < MAX_N; i++){if (!primes[i]){for (int j = i << 1; j < MAX_N; j += i){primes[j] = true;}}}primeNums[0] = 0, primeNums[1] = 0;for (int i = 2; i < MAX_N; i++){if (!primes[i] && isMeiPrime(i)) primeNums[i] = primeNums[i-1] + 1;else primeNums[i] = primeNums[i-1];}
}int main()
{seive();int T, a, b;scanf("%d", &T);for (int t = 1; t <= T; t++){scanf("%d %d", &a, &b);printf("Case #%d: %d\n", t, primeNums[b] - primeNums[a-1]);}return 0;
}
HDU 4548 美素数 素数题解相关推荐
- HDU 4548 美素数(打表)
HDU 4548 美素数(打表)解题报告 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=88159#problem/H 题目 ...
- HDU 4548 美素数
美素数 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Total Submis ...
- 输出100-200之间所有的素数(素数:只能被1和自己本身整除的数)
输出100-200之间所有的素数 素数:只能被1和自己本身整除的数 <script type="text/javascript">// 1. 输出100-200之间所有 ...
- 美素数(HDU 4548)(打表,简化时间复杂度)
相信大家都喜欢美的东西,让我们一起来看看美素数吧. 问题是这样的:一个十进制数,如果是素数,而且它的各位数字和也是素数,则称之为"美素数",如29,本身是素数,而且2+9 = 11 ...
- 杭电 4548 美素数
美素数 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Total Submis ...
- 【ACM】杭电OJ 4548 美素数(二次打表)
二次打表,第一次是标记哪些是素数,哪些不是. 第二次是前n个数中 "本身是素数 && 各个位上的和是素数 " 的个数 TLE: #include < ...
- hdu 2098 分拆素数和(一个偶数拆分成两个不同素数和 拆法数量)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=2098 分拆素数和 Time Limit: 1000/1000 MS (Java/Others) ...
- HDU 2098 分拆素数和
Problem Description 把一个偶数拆成两个不同素数的和,有几种拆法呢? Input 输入包含一些正的偶数,其值不会超过10000,个数不会超过500,若遇0,则结束. Output 对 ...
- [HDU]2098分拆素数和
http://acm.hdu.edu.cn/showproblem.php?pid=2098 用筛法标记素数,这道题就简单了. 不过有一点需要注意就是,要拆分成不同的素数,这就解释了为什么26这组数据 ...
最新文章
- 课题背景 一二三代测序技术
- 【PAT乙级】1041 考试座位号 (15 分)
- Python3——字典
- 掌握神经网络,入门深度学习
- 海龟绘图小动物_震惊!被塑料绳勒成两半的海龟
- soidworks 生成PCD点云文件
- oracle删除资产模块凭证,请教老师,固定资产凭证不小心给删除了,然后在固定资产模块那边说已经存在了,那我要怎么做?...
- c++ 将引用赋值给引用_5分钟掌握 Python 对象的引用
- python win7 win10_Python如何获取Win7,Win10系统缩放大小
- 计算机开题报告中的研究方法,开题报告:经济学写论文用到的五种研究方法
- Java—读取指定路径下文件的内容
- Ubuntu20安装卸载MySQL8.0
- Android MeasureSpec详解
- 智能混音插件 – iZotope Neutron Advanced 3.11 win-mac
- 一人饮酒醉用计算机版,玩家自制游戏版《一人饮酒醉》,歪唱喊麦笑翻全场
- 虚拟主播?这个项目,我能玩一年!
- 企业微信(h5页面嵌入企业微信)的分享总结
- srand和rand详细讲解
- 便携式显示器之手机云本 ----- 手机秒变电脑
- 项目开发过程中的管理规范