LightOJ 1197 Help Hanzo 素数筛
题意:筛一段区间内素数的个数,区间宽度10w,区间范围INT_MAX
分析:用sqrt(INT_MAX筛一遍即可),注意先筛下界,再筛上届,因为有可能包含
#include <cstdio> #include <iostream> #include <ctime> #include <vector> #include <cmath> #include <map> #include <queue> #include <algorithm> #include <cstring> using namespace std; typedef long long LL; const int N=1e7+5; const int INF=0x3f3f3f3f; int cnt; bool v[N]; LL prime[700000]; void getprime(){for(int i=2;i*i<=N-5;++i)if(!v[i])for(int j=i*i;j<=N-5;j+=i)v[j]=1;for(int i=2;i<=N-5;++i)if(!v[i])prime[++cnt]=i; } int ans; vector<LL>g,c; bool vis[100]; void dfs(int pos,LL res){if(pos==g.size()){int tmp=1;for(int i=0;i<g.size();++i){if(vis[i])continue;tmp*=(c[i]+1);}ans+=tmp;return;}dfs(pos+1,res);vis[pos]=1;for(LL i=1,k=g[pos];i<=c[pos];++i,k*=g[pos])dfs(pos+1,res*k);vis[pos]=0;return; } int main() {getprime();int cas=0,T;scanf("%d",&T);while(T--){LL t,n;scanf("%lld",&n),t=n;g.clear(),c.clear();for(int i=1;i<=cnt&&prime[i]*prime[i]<=t;++i){if(t%prime[i])continue;int tot=0;g.push_back(prime[i]);while(t%prime[i]==0)t/=prime[i],++tot;c.push_back(tot);}if(t>1)g.push_back(t),c.push_back(1);ans=0;dfs(0,1);printf("Case %d: %d\n",++cas,(ans>>1)+1);}return 0; }
View Code
转载于:https://www.cnblogs.com/shuguangzw/p/5387098.html
LightOJ 1197 Help Hanzo 素数筛相关推荐
- LightOJ 1197 Help Hanzo
LightOJ 1197 Help Hanzo 题目链接 Amakusa, the evil spiritual leader has captured the beautiful princess ...
- Help Hanzo(素数筛)
题意:本题就是求l~u之间有多少个素数: 分析:因为题数很大,所以不能用正常的素数筛法,只能先筛一部分,在用这些素数再筛出l~u之间的素数.本题和另一道题目很相似(传送门): 另一道题题目链接:htt ...
- 【代码超详解】LightOJ 1197 Help Hanzo(区间质数筛法)
一.题目描述 二.算法分析说明与代码编写指导 对于求指定区间 [a, b] 的质数的题目,通常 a 和 b 都比较大,而 b - a 不太大. 采用埃氏筛或者欧拉筛的代码,一般都会同时给出前若干个质数 ...
- Help Hanzo(LightOJ - 1197)(欧拉筛 + 思维)
LightOJ - 1197 Help Hanzo 来源:LightOJ - 1197 Help Hanzo 题意: 判断a ~ b区间内,有多少个素数,a,b范围[1, 2 ^ 31 - 1],b ...
- Help Hanzo LightOJ - 1197(素数筛法)
Help Hanzo LightOJ - 1197 题目链接: https://cn.vjudge.net/problem/26909/origin 题意: 求两个数a,b之间有多少个素数. 思路: ...
- Help Hanzo LightOJ - 1197 (素数 筛法)
题目地址:http://lightoj.com/volume_showproblem.php?problem=1197 求区间[a,b]之间有多少素数, (1 ≤ a ≤ b < 231, b ...
- E - Help Hanzo(LightOJ 1197)
传送门 Pssword: nefu DescriptionAmakusa, the evil spiritual leader has captured the beautiful princess ...
- M - Help Hanzo (大数区间素数筛)
题目 思路:先对1e5之内的素数筛好,用这些素数筛去大区间内的合数. #include<cstdio> #include<cstring> #include<iostre ...
- M - Help Hanzo(模拟素数筛思想+优化)
题目意思就是求[a,b]的素数个数.这道题我一看枚举不就完了吗? 但是看到那个2^31次方就知道了,如果枚举肯定TLE了: 所以百度了一下说模拟素数筛.我觉得我自己有必要回忆一下素数筛原理. #inc ...
最新文章
- 构建你的第一个Vue.js组件
- 如何在64位的windows平台上安装需要c编译的python扩展库
- selenium | TypeError:object of type ‘WebElement’ has no len()
- Android开发之高德地图无法显示地图的原因
- [蓝桥杯][算法提高VIP]数的划分(记忆化搜索)
- 2015蓝桥杯省赛---java---C---1(隔行变色)
- ecshop mysql 标题表_ecshop商品分类列表页如何自定义title标题
- 一种依靠压缩电磁铁制造暗物质虫洞的机器
- 《富爸爸穷爸爸 》 读书笔记
- python 一元二次方程计算器
- eclipse常用的搜索快捷键
- 有没有开以修改服务器游戏数据,剑网3指尖江湖第二批服务器数据互通啦 来看看有没有你所在的大区...
- 漫画:鉴权与安全访问控制的技术血脉
- 或再被“转手”,家乐福中国还能“攀”上哪座靠山?
- jq插件处女座 图片轮播
- ionic的生命周期
- 智能取餐柜----解锁外卖新姿势
- PyQt Python 桌面便签与美化流程
- ppt文件损坏怎么修复?实用方法不要错过
- win7剪切板_win7系统如何清空剪切板 win7系统清空剪切板步骤【图文】
热门文章
- Word文档处理控件TX Text Control .NET for WPF
- oracle10g遇到ORA-16038日志无法归档问题
- linux备份和还原设置密码,AnyBackup Linux操作系统备份与恢复最佳实践手册(33页)-原创力文档...
- 获取屏幕的宽高 android,Android获取屏幕宽高的方法
- css下拉点击不动,CSS3 - 进行简单的点击下拉[关闭](CSS3 - Making a simple click-dropdown [closed])...
- 二维均匀分布的边缘密度函数_理解概率密度函数
- pytorch搭建TextRCNN模型与使用案例
- pytorch搭建TextCNN与使用案例
- 解决pytorch二分类任务交叉熵损失函数CrossEntropyLoss报错:IndexError: Target 1 is out of bounds.
- ipv6网络使用scp,并解决No route to host与no matches found报错