HDU2204 Eddy's爱好
题意:给你一个正整数N,确定在1到N之间有多少个可以表示成M^K(K>1)的数。
解析:一个数N 开K次根后得到M 则小于M的所有数的K次方一定小于N
因为任何一个合数都能分解为素数的乘积 所以用素数即可
2^60>10^18所以,指数最大为60,打表60以内的素数。因为2*3*5*7大于60,所以最多只有三个数相乘,即三个集合相交。
#include <iostream>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
typedef long long LL;
LL ans,n;
int i;
int prime[]={,,,,,,,,,,,,,,,,};
void dfs(int j,int num,int p)
{
if(p == )
{
LL t = pow(n,1.0/num);
t--; // 因为每次都有底数为1的情况 所以每次都要减1 最后输出时加1
if(t > )
ans += t*(i&?:(-)); //容斥定理 奇数个集合时为正 偶数个集合时为负
return;
}
if(j >= ) return; //prime里的下标最大为17
if(num * prime[j] < )
dfs(j+,num*prime[j],p-); //要本次的prime[j] 递归找下一个要的
dfs(j+,num,p); //不要本次的prime[j] 递归找要的
} int main()
{
while(cin>>n)
{
ans = ;
for(i=;i<=;i++) //如果把prime里的每一个数看作一个集合 则这个循环为枚举集合的个数
dfs(,,i);
cout<<ans + <<endl; // 加上底数为1的情况 }
return ;
}
HDU2204 Eddy's爱好的更多相关文章
- 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 ... 
- HDU2204 Eddy's爱好(容斥原理)
		题目问[1,n]有几个数是$m^k (k>1)$形式. 如果这样考虑,m已知k未知,对于每一个m统计其k的数量即$\lfloor log_mn \rfloor$个,再容斥,然而m太多了,完全不可 ... 
- Eddy's爱好    hdu2204
		Eddy's爱好 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Su ... 
- Eddy's爱好(dfs+容斥)
		Eddy's爱好 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total 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 ... 
- 【HDU2204】Eddy's爱好
		题目大意:求从 1 到 N 中共有多少个数可以表示成 \(M^K,K \gt 1\).\(N \le 1e18\) 题解: 发现 N 很大,若直接枚举 M 的话有 1e9 级别的数据量,肯定超时,因此 ... 
- HDU 2204 Eddy's爱好(容斥原理)
		题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2204 解题报告:输入一个n让你求出[1,n]范围内有多少个数可以表示成形如m^k的样子. 不详细说了, ... 
随机推荐
- 1177: LFX学橙啦!题解
			问题如下:先给你一个含有N个整数的数组数组中的每一个元素只为1或者0而N的大小为1~100你可以删除一些元素(也可以选择不删除),使剩下的数组中,没有一个元素0在1后面出现.并且要使剩下的元素的数量最 ... 
- case when then的用法-leetcode交换工资
			case具有两种格式:简单case函数和case搜索函数. --简单case函数 case sex when ' then '男' when ' then '女’ else '其他' end --ca ... 
- final域的内存语义
			final 一.final的基本语义 final关键字可以用来修饰类.方法和变量(包括成员变量和局部变量) 当用final修饰一个类时,表明这个类不能被继承. 当用final修饰一个方法时,表明这个方 ... 
- CI框架在模型中切换读写库和读写库
			如果你想在控制器中切换在application/config/database.php中配置好的数据库group,那么你可以参考这篇博客:CI框架在控制器中切换读写库和读写库 如果你是希望在模型中切换 ... 
- js处理ajax返回的json数组
			一.json对象和json数组的区别 jsonObject = {} # json对象 jsonArray=[{},{}] # json数组 二.数据处理 前台接收到后台传过来的json数组实际上是一 ... 
- Satis搭建composer私有库(自定义下载目录)
			在我们的日常php开发中需要使用大量的第三方包和类库, 怎么管理是一个问题, 我们用的Yii2框架, 但是并没有把composer用起来, 由于最近更换为docker部署项目, 于是想起来用compo ... 
- 6-1  Quantifiers
			1 Quantifiers are used to describe the number or amount of something. Certain quantifiers are used w ... 
- git fetch 更新远程代码到本地仓库
			理解 fetch 的关键, 是理解 FETCH_HEAD,FETCH_HEAD指的是: 某个branch在服务器上的最新状态’.这个列表保存在 .Git/FETCH_HEAD 文件中, 其中每一行对应 ... 
- 牛客练习赛13D 幸运数字4
			题目链接:https://ac.nowcoder.com/acm/contest/70/D 题目大意: 略 分析: 注意到12! < 10^9 < 13!,于是当n > 13时,第k ... 
- Spark开发第一个程序
			simon@simon-Lenovo-G400:~/.ssh$ touch authorized_keyssimon@simon-Lenovo-G400:~/.ssh$ cat id_rsa.pub ... 
