hdu_5750_Dertouzos(线性筛)
2016-07-24 00:41
148 查看
题目连接:hdu_5750_Dertouzos
题意:
给你一个n,一个d,问你比n小的数中有多少个数的最大的因子为d,比如6有因子1 2 3 最大的为3
题解:
当时比赛做这题的时候没考虑常数的优化,过了初测,然后FST了,卧槽。。。
这题仔细观察就可以发现我们只需要找一个数s,s*d比n小,且s不大于d的最小的质因数,这样才能使s*d这个数的最大的因子为d。然后我们就用线性筛 先筛出2W的素数,其实应该筛到33333的,不过我测试了数据2W也能过,然后就扫一遍就行了
#include<cstdio> #define F(i,a,b) for(int i=a;i<=b;++i) int primes[30000],tot=0,N=20000; bool vis[20001]; void Euler(){ F(i,2,N){ if(!vis[i])primes[++tot]=i; F(j,1,tot){ if(i*primes[j]>N)break; vis[i*primes[j]]=1; if(i%primes[j]==0)break; } } } int main(){ Euler(); int t,n,d; scanf("%d",&t); while(t--) { scanf("%d%d",&n,&d); int mi=-1,tp=(n-1)/d,ans=0; for(int i=1;i<tot;i++) { if(primes[i]>tp)break; ans++; if(d%primes[i]==0)break;//如果d是当前素数的倍数,那么下一个素数肯定比这个素数大,所以直接退出 } printf("%d\n",ans); } return 0; }View Code
相关文章推荐
- 08_一个java.lang.NullPointException报错
- WEB项目构建优化之自动清除CSS中的图片缓存
- DICOM:Docker实现增量发布之前期准备
- 使用PHP实现文件上传和多文件上传
- c 语言头文件和源文件
- Xutils的bitmapUtils的缓存理解
- apache 虚拟主机
- php 实现多文件上传程序代码
- (13)HTML标签详解之<body>
- Core_3_文件读取和随机数引擎
- iOS tableView右滑显示选择
- shell开发入门,第一个shell
- 守护进程
- WEB项目构建优化之自动清除CSS中的图片缓存
- 执行hadoop fs -ls时出现错误RuntimeException: core-site.xml not found
- 文学摘录
- iOS Storyboard全解析
- TFS2015解决方案中新建团队项目
- 07_MyBatis原始的Dao编写方法
- java.security.AccessControlException: access denied