HDU 2204 Eddy's爱好(容斥原理)
来源:互联网 发布:苹果6如何锁定4g网络 编辑:程序博客网 时间:2024/06/05 16:26
转载请注明出处,谢谢 http://blog.csdn.net/ACM_cxlove?viewmode=contents by---cxlove
题目:求出1-N里面能表示 成M^K的数有多少个。
容斥解决。首先我们知道因子如果A^B在范围内,那么i^B也在范围之内 (A>i>=1)
另外B考虑质因子,如果A^4在范围内的话,肯定(2*A)^2也在范围内,没有必要重复考虑
指数虽然考虑了质因子,但是我们发现还是有重复,如果说4^3与8^2还是重复了,这是因为他们同为2^6。
我们用Ai表示指数为质因子Pi的数目,那么A1+A2……Ak-(A1交A2)-(A1交A3)……+(A1交A2交A3)……
另外 指数的范围,2^60>10^18所以,指数最大为60,打表60以内的素数,然后容斥
另外2*3*5*7大于60,所以最多只有三个集合的交
网上都说注意精度,貌似没有考虑就水过了。
#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#define LL long long#define eps 1e-7using namespace std;int prime[]={2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59};LL ans,n;int i;void dfs(int idx,int num,int k){ if(k==0){ LL temp=pow(n,1.0/num); if(pow(temp,0.0+num)>n) temp--; temp--; if(temp>0) ans+=temp*(i&1?1:-1); return ; } if(idx>=17) return; if(num*prime[idx]<60) dfs(idx+1,num*prime[idx],k-1); dfs(idx+1,num,k);}int main(){ while(scanf("%I64d",&n)!=EOF){ ans=0; for(i=1;i<=3;i++) dfs(0,1,i); printf("%I64d\n",ans+1); } return 0;}
- HDU 2204 Eddy's爱好(容斥原理)
- hdu 2204 Eddy's爱好(容斥原理)
- hdu-2204-Eddy's爱好(容斥原理)
- hdu 2204 Eddy's爱好(容斥原理)
- hdu 2204 Eddy's爱好 (容斥原理)
- 【HDU】2204 Eddy's爱好 容斥原理
- [容斥原理] hdu 2204 Eddy's爱好
- HDU 2204 - Eddy's爱好 (容斥原理)
- hdu 2204 Eddy's爱好 容斥原理
- hdu 2204 Eddy's爱好 (数论,容斥原理)
- HDU 2204Eddy's爱好(数论,容斥原理)
- hdu 2204 Eddy's爱好 容斥原理
- HDU 2204 - Eddy's爱好- 容斥原理
- hdu 2204 Eddy's爱好 [容斥原理]【组合数学】
- HDU 2204 Eddy's爱好(容斥原理)
- HDU 2204 Eddy's爱好 (容斥原理)
- hdu 2204 Eddy's爱好(容斥原理)
- Eddy's爱好(容斥原理)
- andorid中c++与java中的方法互调
- tmshutdown: internal error: CMDTUX_CAT:764: ERROR: can't attach to BB
- 10、结合本阶段学习的知识,你认为写出优美的程序应该注意哪些方面?
- powerdesigner怎样导入数据库
- MSCRM4.0删除用户
- HDU 2204 Eddy's爱好(容斥原理)
- GCC/G++编译器和VS IDE中的一些预定义宏和用户自定义宏
- Linux下C语言编程--文件的操作
- Linux下一次解压多个文件
- 9.png 部分区域莫名变透明问题
- LINUX系统笔记2---系统的引导
- 编写实现 函数char *strcat(char *dest ,char *src)
- C++面试题 强势出击
- Objective C 适配器模式