HDU-2204- Eddy’s爱好 (容斥原理)
题意
给出一个数n,问1-n中有多少个数可以表示为m^k,m,k均为正整数且k>1
(1<=n<=1^18)
题解
(一开始^以为是异或懵逼了好久....)
额,显然1这个数比较讨厌1的多少次方都得1,对答案的贡献为1,最后加上就可以了。
然后,我们发现x^4=(x^2)^2四次方可以用平方的平方代替,我们只枚举质数次方,然后用n(1/x)等于x次方在n之内的数的个数(这个东西会有精度问题)。
就可以求出质数次方在1到n之内的数有多少。但是,发现(x^2)^3==(x^3)^2,(x^2)^3(或者说(x^3)^2)被算了两次。
这时,就用到容斥原理了。因为2^60>1e18所以质数次方考虑到59,又因为2*3*5*7=210>60,所以容斥时容斥到三个数就行了。
(容斥原理居然是小学奥数4大定理之一)
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
long long prime[]={,,,,,,,,,,,,,,,,,};
long long n,ans;
void dfs(long long now,long long num,long long res,long long k){
if(res==){
long long tmp=pow(n,1.0/num);
if(pow(tmp,(double)num)>n) tmp--;
tmp--;
if(tmp>){
if(k&)ans+=tmp;
else ans-=tmp;
}
return;
}
if(now>)return;
if(num*prime[now]<)dfs(now+,num*prime[now],res-,k);
dfs(now+,num,res,k);
}
int main(){
while(scanf("%lld",&n)!=EOF){
ans=;
for(long long i=;i<=;i++)dfs(,,i,i);
printf("%lld\n",ans+);
}
return ;
}
HDU-2204- Eddy’s爱好 (容斥原理)的更多相关文章
- HDU 2204 Eddy's 爱好 (容斥原理)
<题目链接> 题目大意: Ignatius 喜欢收集蝴蝶标本和邮票,但是Eddy的爱好很特别,他对数字比较感兴趣,他曾经一度沉迷于素数,而现在他对于一些新的特殊数比较有兴趣. 这些特殊数是 ...
- hdu 2204 Eddy's爱好 容斥原理
Eddy's爱好 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Problem ...
- HDU 2204 Eddy's爱好(容斥原理)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2204 解题报告:输入一个n让你求出[1,n]范围内有多少个数可以表示成形如m^k的样子. 不详细说了, ...
- HDU 2204 Eddy's爱好(容斥原理dfs写法)题解
题意:定义如果一个数能表示为M^k,那么这个数是好数,问你1~n有几个好数. 思路:如果k是合数,显然会有重复,比如a^(b*c) == (a^b)^c,那么我们打个素数表,指数只枚举素数,2^60 ...
- hdu 2204 Eddy's爱好
// 一个整数N,1<=N<=1000000000000000000(10^18).// 输出在在1到N之间形式如M^K的数的总数// 容斥原理// 枚举k=集合{2,3,5,7,11,1 ...
- HDU - 2204 Eddy's爱好 (数论+容斥)
题意:求\(1 - N(1\le N \le 1e18)\)中,能表示成\(M^k(M>0,k>1)\)的数的个数 分析:正整数p可以表示成\(p = m^k = m^{r*k'}\)的形 ...
- hdoj 2204 Eddy's爱好
原文链接:http://www.cnblogs.com/DrunBee/archive/2012/09/05/2672546.html 题意:给你一个正整数N,确定在1到N之间有多少个可以表示成M^K ...
- HDU 2204Eddy's爱好(容斥原理)
Eddy's爱好 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Sta ...
- hdu2204 Eddy's爱好 打表+容斥原理
Ignatius 喜欢收集蝴蝶标本和邮票,但是Eddy的爱好很特别,他对数字比较感兴趣,他曾经一度沉迷于素数,而现在他对于一些新的特殊数比较有兴趣.这些特殊数是这样的:这些数都能表示成M^K,M和K是 ...
- Hdu2204 Eddy's爱好 2017-06-27 16:11 43人阅读 评论(0) 收藏
Eddy's爱好 Time Limit : 3000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Subm ...
随机推荐
- table标签 在谷歌和ie浏览器下不同的表现效果
在项目中有了一个这样的需求: 我需要利用vue的模板语法v-for循环生成tr,这个tr是需要双重循环来确定其个数的, 我的实现: 我在tr外面包了一个template标签, 效果: 谷歌浏览器下实现 ...
- C# 基础复习 二 面向对象
继承:子承父业 子:子类 父:父类 业:所有非私有成员 好处:代码的复用 继承后,实例化子类时,不止子类的构造,父类的构造也会执行,而且父类的构造先于子类的构造执行 即使在子类可以看 ...
- Node Sass does not yet support your current environment: Windows 64-bit然如何解决,cnpm此问题解决方法
这里直接说了node sass不支持当前环境,所以可以直接删掉原来不支持本机的node sass,再重新安装就行了 删除: npm uninstall --save node-sass 安装: npm ...
- jQuery优化性能的十种方法
1,总是从ID选择器开始继承 例如: <div id="content"> <form method="post" action=" ...
- TensorFlow+实战Google深度学习框架学习笔记(7)-----队列与多线程
一.创建一个队列: FIFOQueue:先进先出 RandomShuffleQueue:会将队列中的元素打乱,每次出列操作得到的是从当前队列所有元素中随机选择的一个. 二.操作一个队列的函数: enq ...
- 一些css布局
# css布局 #---bootstrap 详情请看官方文档---首先要按照相应的官方规范引入相应的css js fonts等 container相当于一个容器 一般设置一个 接下来设置行 用ro ...
- 2019-03-20 用SSIS把Excel中的数据导出来保存到SQLServer中
Control Flow 1.配置 好 图形 2.去变量那 配置好 文件路径 和 存储过程 3.在SQL Server创建对应的存储过程,该存储过程的功能是每次导入是清空原有的数据 4.如果不懂的参考 ...
- JavaScript 实现简单的 弹出框关闭框
JavaScript 实现简单的 弹出框关闭框 知识点: 1.javaScript 添加HTML标签 2.javaScript 添加HTML标签属性 3.javaScript 追加元素 代码献上: & ...
- HDU 1709
MB,一开始就想到是不是只要加上一个不选择砝码的情况,但一直没动手做,因为看了看网上了,觉得总有点复杂,认为自己想错了.... 相信自己 #include <iostream> #incl ...
- Pointcut is not well-formed: expecting 'name pattern' at character position 36
Pointcut is not well-formed: expecting 'name pattern' at character position 36 学习了:http://blog.csdn. ...