题意:筛一段区间内素数的个数,区间宽度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 素数筛相关推荐

  1. LightOJ 1197 Help Hanzo

    LightOJ 1197 Help Hanzo 题目链接 Amakusa, the evil spiritual leader has captured the beautiful princess ...

  2. Help Hanzo(素数筛)

    题意:本题就是求l~u之间有多少个素数: 分析:因为题数很大,所以不能用正常的素数筛法,只能先筛一部分,在用这些素数再筛出l~u之间的素数.本题和另一道题目很相似(传送门): 另一道题题目链接:htt ...

  3. 【代码超详解】LightOJ 1197 Help Hanzo(区间质数筛法)

    一.题目描述 二.算法分析说明与代码编写指导 对于求指定区间 [a, b] 的质数的题目,通常 a 和 b 都比较大,而 b - a 不太大. 采用埃氏筛或者欧拉筛的代码,一般都会同时给出前若干个质数 ...

  4. Help Hanzo(LightOJ - 1197)(欧拉筛 + 思维)

    LightOJ - 1197 Help Hanzo 来源:LightOJ - 1197 Help Hanzo 题意: 判断a ~ b区间内,有多少个素数,a,b范围[1, 2 ^ 31 - 1],b ...

  5. Help Hanzo LightOJ - 1197(素数筛法)

    Help Hanzo LightOJ - 1197 题目链接: https://cn.vjudge.net/problem/26909/origin 题意: 求两个数a,b之间有多少个素数. 思路: ...

  6. Help Hanzo LightOJ - 1197 (素数 筛法)

    题目地址:http://lightoj.com/volume_showproblem.php?problem=1197 求区间[a,b]之间有多少素数, (1 ≤ a ≤ b < 231, b ...

  7. E - Help Hanzo(LightOJ 1197)

    传送门 Pssword: nefu DescriptionAmakusa, the evil spiritual leader has captured the beautiful princess ...

  8. M - Help Hanzo (大数区间素数筛)

    题目 思路:先对1e5之内的素数筛好,用这些素数筛去大区间内的合数. #include<cstdio> #include<cstring> #include<iostre ...

  9. M - Help Hanzo(模拟素数筛思想+优化)

    题目意思就是求[a,b]的素数个数.这道题我一看枚举不就完了吗? 但是看到那个2^31次方就知道了,如果枚举肯定TLE了: 所以百度了一下说模拟素数筛.我觉得我自己有必要回忆一下素数筛原理. #inc ...

最新文章

  1. 构建你的第一个Vue.js组件
  2. 如何在64位的windows平台上安装需要c编译的python扩展库
  3. selenium | TypeError:object of type ‘WebElement’ has no len()
  4. Android开发之高德地图无法显示地图的原因
  5. [蓝桥杯][算法提高VIP]数的划分(记忆化搜索)
  6. 2015蓝桥杯省赛---java---C---1(隔行变色)
  7. ecshop mysql 标题表_ecshop商品分类列表页如何自定义title标题
  8. 一种依靠压缩电磁铁制造暗物质虫洞的机器
  9. 《富爸爸穷爸爸 》 读书笔记
  10. python 一元二次方程计算器
  11. eclipse常用的搜索快捷键
  12. 有没有开以修改服务器游戏数据,剑网3指尖江湖第二批服务器数据互通啦 来看看有没有你所在的大区...
  13. 漫画:鉴权与安全访问控制的技术血脉
  14. 或再被“转手”,家乐福中国还能“攀”上哪座靠山?
  15. jq插件处女座 图片轮播
  16. ionic的生命周期
  17. 智能取餐柜----解锁外卖新姿势
  18. PyQt Python 桌面便签与美化流程
  19. ppt文件损坏怎么修复?实用方法不要错过
  20. win7剪切板_win7系统如何清空剪切板 win7系统清空剪切板步骤【图文】

热门文章

  1. Word文档处理控件TX Text Control .NET for WPF
  2. oracle10g遇到ORA-16038日志无法归档问题
  3. linux备份和还原设置密码,AnyBackup Linux操作系统备份与恢复最佳实践手册(33页)-原创力文档...
  4. 获取屏幕的宽高 android,Android获取屏幕宽高的方法
  5. css下拉点击不动,CSS3 - 进行简单的点击下拉[关闭](CSS3 - Making a simple click-dropdown [closed])...
  6. 二维均匀分布的边缘密度函数_理解概率密度函数
  7. pytorch搭建TextRCNN模型与使用案例
  8. pytorch搭建TextCNN与使用案例
  9. 解决pytorch二分类任务交叉熵损失函数CrossEntropyLoss报错:IndexError: Target 1 is out of bounds.
  10. ipv6网络使用scp,并解决No route to host与no matches found报错