Eddy's爱好 HDU - 2204
从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相关推荐
- HDU - 2204 Eddy‘s爱好(尚未完全解决)
HDU - 2204 Eddy's爱好 题意: 给你一个正整数N,确定在1到N之间有多少个可以表示成M^K(K>1)的数 题解: 参考题解: 我们先举例找找规律 1~10以内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 ...
- hdu2204 Eddy's爱好 打表+容斥原理
Ignatius 喜欢收集蝴蝶标本和邮票,但是Eddy的爱好很特别,他对数字比较感兴趣,他曾经一度沉迷于素数,而现在他对于一些新的特殊数比较有兴趣. 这些特殊数是这样的:这些数都能表示成M^K,M和K ...
- HDU 2204 Eddy's爱好(容斥原理)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2204 解题报告:输入一个n让你求出[1,n]范围内有多少个数可以表示成形如m^k的样子. 不详细说了, ...
- hdu-2204 Eddy's爱好 nyoj 526
hdu : http://acm.hdu.edu.cn/showproblem.php?pid=2204 nyoj : http://acm.nyist.net/JudgeOnline/proble ...
- HDU2204 Eddy's爱好(容斥原理)
题目问[1,n]有几个数是$m^k (k>1)$形式. 如果这样考虑,m已知k未知,对于每一个m统计其k的数量即$\lfloor log_mn \rfloor$个,再容斥,然而m太多了,完全不可 ...
- hdu 2204 容斥原理
点击打开链接 以下为参考大牛http://blog.csdn.net/acm_cxlove/article/details/7873776 题目:求出1-N里面能表示 成M^K的数有多少个 求A^B在 ...
- ACM组合数学题目列表
基本组合计数 HDU 1028 Ignatius and the Princess III 整数划分 HIT 1402 整数划分问题 多种整数划分 置换群 PKU 2369 求置换的周期 1026 求 ...
- 信息学竞赛中的数学知识 --- 容斥原理
C++基础数论-----容斥原理 C++基础数论-----容斥原理_C2020lax的博客-CSDN博客_容斥原理c++ C++数论容斥原理----无关的元素 C++数论容斥原理----无关的元素 - ...
最新文章
- aspnetcore mvc 异常处理_深入探究ASP.NET Core异常处理中间件
- java怎么制作放置游戏_从零开始实现放置游戏(八)——实现后台管理系统(6)代码重构...
- Android 软键盘的全面解析,让你不再怕控件被遮盖
- golang []byte 和 string相互转换
- 学习笔记(16):Python网络编程并发编程-开启子进程的两种方式
- linux下用c语言写黄金矿工,C语言写的黄金矿工O(∩_∩)O---初稿,能玩了
- K8S_Google工作笔记0002---K8S集群架构组件
- greenplum管理员日常任务
- linux opensource,GitHub - opensourceteams/linux: linux命令
- RobotFramework-关键字-Wait Until Keyword Succeeds
- java说的tps pv是什么_你知道服务器PV、TPS、QPS是怎么计算出来的吗?
- webscraper 爬取二级网页_web scraper 入门到精通之路
- 西电微机系统课程设计——步进电机开环控制系统设计
- matlab rloess,比较ggplot loess拟合和loess拟合函数
- 天宝营养冲刺深交所:年营收12.5亿 拟募资7亿
- MySQL Error:1677
- 星座图中格雷映射及其实现
- 一网打尽!!!以太网、局域网、广域网、因特网、互联网与万维网是什么?用来干什么的?它们之间有什么区别?
- python enumerate_Python enumerate() 函数
- JavaScript和JQuery好书推荐