hdu 2204 Eddy's爱好
求$[1,n]$种有多少正整数可以表示为$p^q$的形式,其中$p,q$为正整数,且$q \ge 2$
$1 \le n \le 10^{18}$
1. 若$p^q \le n$,则$\forall t \le p$,有$t^q \le n$
2. $p^q \le n \Rightarrow p \le \lfloor \sqrt[q]n \rfloor$,即$[1,n]$中可以写成$p^q$的$p$的个数为$\lfloor \sqrt[q]n \rfloor$
3. $p^q=(p^{a})^{b}=(p^{b})^{a}$,其中$a$为素数
枚举素数$a$,考虑所有$p^a$形式的数如何统计入答案
对于一个数$x=p^q$,设$p$不含非$1$的平方因子,$q$有$t$个质因子
这是一个经典容斥问题,即找一个函数$f(i)$,使得$\sum\limits_{i=1}^{t}{t \choose i}f(i)=1$成立
显然$f(i)=(-1)^{i+1}$
枚举指数是由哪些素数构成的,然后乘上容斥系数即可
由于$10^{2 \times 3 \times 5 \times 7} \gt 10^{18}$,因此只需要最多枚举三个素数即可
由于$2^{60} \gt 10^{18}$,因此素数只需要枚举到$59$即可(大概有$17$个)
状态量大约为${17 \choose 1} + {17 \choose 2} + {17 \choose 3}=17+136+680=833$
1 #include <bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 5 ll n; 6 const int N = 100; 7 int vis[N], p[N], tot; 8 9 ll calc(ll x) { 10 return (long long) pow(n, 1.0 / x) - 1; 11 } 12 13 void sol() { 14 ll ans = 1; 15 for(int i = 1 ; i <= tot && calc(p[i]) ; ++ i) { 16 ans += calc(p[i]); 17 for(int j = i + 1 ; j <= tot && calc(p[i] * p[j]) ; ++ j) { 18 ans -= calc(p[i] * p[j]); 19 for(int k = j + 1 ; k <= tot && calc(p[i] * p[j] * p[k]) ; ++ k) { 20 ans += calc(p[i] * p[j] * p[k]); 21 } 22 } 23 } 24 cout << ans << endl; 25 } 26 27 int main() { 28 for(int i = 2 ; i < N ; ++ i) { 29 if(!vis[i]) p[++ tot] = i; 30 for(int j = 1 ; j <= tot && i * p[j] < N ; ++ j) { 31 vis[i * p[j]] = 1; 32 if(i % p[j] == 0) break; 33 } 34 } 35 while(cin >> n) sol(); 36 }
hdu 2204 Eddy's爱好
转载于:https://www.cnblogs.com/KingSann/articles/9554488.html
hdu 2204 Eddy's爱好相关推荐
- HDU - 2204 Eddy‘s爱好(尚未完全解决)
HDU - 2204 Eddy's爱好 题意: 给你一个正整数N,确定在1到N之间有多少个可以表示成M^K(K>1)的数 题解: 参考题解: 我们先举例找找规律 1~10以内2的次方有多少个?有 ...
- HDU 2204 Eddy's爱好(容斥原理)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2204 解题报告:输入一个n让你求出[1,n]范围内有多少个数可以表示成形如m^k的样子. 不详细说了, ...
- Eddy's爱好 HDU - 2204
从1到n中,平方数的个数为n^(1/2),立方数的个数为n^(1/3),那么六次方的个数为n^(1/6),因为我们在算平方和立方的时候把六次方算过了,那么就要见去一次.接下来就是一个简单的容斥原理了, ...
- hdu2204 Eddy's爱好 打表+容斥原理
Ignatius 喜欢收集蝴蝶标本和邮票,但是Eddy的爱好很特别,他对数字比较感兴趣,他曾经一度沉迷于素数,而现在他对于一些新的特殊数比较有兴趣. 这些特殊数是这样的:这些数都能表示成M^K,M和K ...
- hdu 1210 Eddy's 洗牌问题
hdu 1210 Eddy's 洗牌问题 Problem DescriptionEddy是个ACMer,他不仅喜欢做ACM题,而且对于纸牌也有一定的研究,他在无聊时研究发现,如果他有2N张牌,编号为1 ...
- hdu-2204 Eddy's爱好 nyoj 526
hdu : http://acm.hdu.edu.cn/showproblem.php?pid=2204 nyoj : http://acm.nyist.net/JudgeOnline/proble ...
- HDU 1162 Eddy's picture (最小生成树)(java版)
Eddy's picture 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1162 --每天在线,欢迎留言谈论. 题目大意: 给你N个点,求把这N个点 ...
- hdu 1161 Eddy's mistakes
http://acm.hdu.edu.cn/showproblem.php?pid=1161 本题主要运用的就是大小写的转换: 我写的代码: #include<iostream> #inc ...
- Hdu - 1210 - Eddy's 洗牌问题
因为考试所以最近都没有做什么题.想不到这题都卡(~~~~(>_<)~~~~ ),看来太久没有做题感觉变迟钝了,当然也有原因是找规律的题做得比较少,所以就这样了,看来要快快调整好,好好努力才 ...
最新文章
- c语言编程:输入一个数看它是不是素数
- 查询前几条记录SQL在不同数据库中的用法
- ubuntu mysql备份_Ubuntu下进行MYSQL自动备份
- 【转】开发人员一定要加入收藏夹的网站
- 人际交往的“三有三避”
- Bean生命周期配置
- VTK+MFC 系列教程 非常强大
- 封装绑定以BaseDataList , ListControl 为基类的函数库
- linux 重读环境变量,关于linux中使用source /etc/profile重新读取配置后,新的环境变量只能在当前终端里面有效,新开的终端提示 command not found...
- 【HTML 初学】2、HTML属性
- mysql trim 索引_MySQL常用函数,你真得看看!
- 多输出模型实例的数据加载
- iptables调试的小窍门 之前没想到啊 从抚琴煮酒那看的
- zeppelin k8s安装部署和基本使用教程(在线的分析工具)
- 基于jsp+servlet的 新闻管理系统。
- 当你的MS OFFICE打不开时,安全模式也失效,来看我给你变戏法吧
- 系统学习深度学习(十六)--Overfeat
- 企业数据总线(ESB)和注册服务管理(dubbo)的区别
- python回归分析波士顿房价_python 线性回归(Linear Regression)预测波士顿房价
- java 高效列转行,java 列转行
热门文章
- matlab 口号色号修改器
- 国外常用的免费DNS域名解析服务器(转)
- 7-45 循环结构7:求x+x2+x3+...+xn的值 (50 分) 输入整数x,n(x与n均为1到8之间的整数),输出x1+x2+x3+...+xn(第二个数字表示指数)的值,不能使用pow函数
- bat 批处理 批量调整 srt 字幕文件时间
- web前端css伪元素使用阿里iconfont中Unicode编码
- 数学黑洞(一)令人拍案叫绝的卡布列克常数
- 助力企业实现远程监控故障诊断
- Android 7.0 行为变更
- Django(九)模型:dj查询数据库的函数(方法)
- 【办公自动化】Python图像操作术