从1到n中,平方数的个数为n^(1/2),立方数的个数为n^(1/3),那么六次方的个数为n^(1/6),因为我们在算平方和立方的时候把六次方算过了,那么就要见去一次。接下来就是一个简单的容斥原理了,当该数的莫比乌斯函数值为负一的时候加上,为正一的时候减去,为零的时候不用算,因为前边出现过的肯定包含改次方的个数。(数据大的时候可能会有一些误差,但这并不影响)

Ignatius 喜欢收集蝴蝶标本和邮票,但是Eddy的爱好很特别,他对数字比较感兴趣,他曾经一度沉迷于素数,而现在他对于一些新的特殊数比较有兴趣。 
这些特殊数是这样的:这些数都能表示成M^K,M和K是正整数且K>1。 
正当他再度沉迷的时候,他发现不知道什么时候才能知道这样的数字的数量,因此他又求助于你这位聪明的程序员,请你帮他用程序解决这个问题。 
为了简化,问题是这样的:给你一个正整数N,确定在1到N之间有多少个可以表示成M^K(K>1)的数。

Input

本题有多组测试数据,每组包含一个整数N,1<=N<=1000000000000000000(10^18).

Output

对于每组输入,请输出在在1到N之间形式如M^K的数的总数。 
每组输出占一行。

Sample Input

10
36
1000000000000000000

Sample Output

4
9
1001003332
#include <bits/stdc++.h>
using namespace std;
const int MAXN=1000010;
bool check[MAXN];
int prime[MAXN];
int mu[MAXN];
void moblus() {memset(check,false,sizeof(check));mu[1]=1;int tot=0;for(int i=2; i<=MAXN; i++) {if(!check[i]) {prime[tot++]=i;mu[i]=-1;}for(int j=0; j<tot; j++) {if(i*prime[j]>MAXN) break;check[i*prime[j]]=true;if(i%prime[j]==0) {mu[i*prime[j]]=0;break;} else {mu[i*prime[j]]=-mu[i];}}}
}
int main() {long long int n;moblus();while(~scanf("%lld",&n)) {long long int ans=0;for(int i=2; i<=64; i++) {if(mu[i]==0)continue;if(mu[i]==-1) {ans+=((long long)pow(n,1.0/i)-1);} else if(mu[i]==1) {ans-=((long long)pow(n,1.0/i)-1);}}printf("%lld\n",ans+1);}return 0;
}

Eddy's爱好 HDU - 2204相关推荐

  1. HDU - 2204 Eddy‘s爱好(尚未完全解决)

    HDU - 2204 Eddy's爱好 题意: 给你一个正整数N,确定在1到N之间有多少个可以表示成M^K(K>1)的数 题解: 参考题解: 我们先举例找找规律 1~10以内2的次方有多少个?有 ...

  2. 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 ...

  3. hdu2204 Eddy's爱好 打表+容斥原理

    Ignatius 喜欢收集蝴蝶标本和邮票,但是Eddy的爱好很特别,他对数字比较感兴趣,他曾经一度沉迷于素数,而现在他对于一些新的特殊数比较有兴趣. 这些特殊数是这样的:这些数都能表示成M^K,M和K ...

  4. HDU 2204 Eddy's爱好(容斥原理)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2204 解题报告:输入一个n让你求出[1,n]范围内有多少个数可以表示成形如m^k的样子. 不详细说了, ...

  5. hdu-2204 Eddy's爱好 nyoj 526

    hdu : http://acm.hdu.edu.cn/showproblem.php?pid=2204 nyoj :  http://acm.nyist.net/JudgeOnline/proble ...

  6. HDU2204 Eddy's爱好(容斥原理)

    题目问[1,n]有几个数是$m^k (k>1)$形式. 如果这样考虑,m已知k未知,对于每一个m统计其k的数量即$\lfloor log_mn \rfloor$个,再容斥,然而m太多了,完全不可 ...

  7. hdu 2204 容斥原理

    点击打开链接 以下为参考大牛http://blog.csdn.net/acm_cxlove/article/details/7873776 题目:求出1-N里面能表示 成M^K的数有多少个 求A^B在 ...

  8. ACM组合数学题目列表

    基本组合计数 HDU 1028 Ignatius and the Princess III 整数划分 HIT 1402 整数划分问题 多种整数划分 置换群 PKU 2369 求置换的周期 1026 求 ...

  9. 信息学竞赛中的数学知识 --- 容斥原理

    C++基础数论-----容斥原理 C++基础数论-----容斥原理_C2020lax的博客-CSDN博客_容斥原理c++ C++数论容斥原理----无关的元素 C++数论容斥原理----无关的元素 - ...

最新文章

  1. aspnetcore mvc 异常处理_深入探究ASP.NET Core异常处理中间件
  2. java怎么制作放置游戏_从零开始实现放置游戏(八)——实现后台管理系统(6)代码重构...
  3. Android 软键盘的全面解析,让你不再怕控件被遮盖
  4. golang []byte 和 string相互转换
  5. 学习笔记(16):Python网络编程并发编程-开启子进程的两种方式
  6. linux下用c语言写黄金矿工,C语言写的黄金矿工O(∩_∩)O---初稿,能玩了
  7. K8S_Google工作笔记0002---K8S集群架构组件
  8. greenplum管理员日常任务
  9. linux opensource,GitHub - opensourceteams/linux: linux命令
  10. RobotFramework-关键字-Wait Until Keyword Succeeds
  11. java说的tps pv是什么_你知道服务器PV、TPS、QPS是怎么计算出来的吗?
  12. webscraper 爬取二级网页_web scraper 入门到精通之路
  13. 西电微机系统课程设计——步进电机开环控制系统设计
  14. matlab rloess,比较ggplot loess拟合和loess拟合函数
  15. 天宝营养冲刺深交所:年营收12.5亿 拟募资7亿
  16. MySQL Error:1677
  17. 星座图中格雷映射及其实现
  18. 一网打尽!!!以太网、局域网、广域网、因特网、互联网与万维网是什么?用来干什么的?它们之间有什么区别?
  19. python enumerate_Python enumerate() 函数
  20. JavaScript和JQuery好书推荐

热门文章

  1. 中国碎石设备行业市场供需与战略研究报告
  2. 那些年啊,那些事——一个程序员的奋斗史 ——84
  3. 快解析结合友加畅捷通t1飞跃版
  4. python 喜马拉雅 音乐下载 演示代码
  5. C#程序下扫描枪扫描文本自动执行解决方案
  6. Linux电脑eduroam怎么连,【SHU·新生季】校园网连接指南
  7. Arduino开发之GP2Y0A21 Distance Sensor
  8. 反arp攻击软件_技术干货透析中间人攻击
  9. Spring配置log4j
  10. 赶超印度应是中国软件业发展方向吗?