poj 1091 跳蚤 扩展欧几里得+容斥原理
2016-05-03 15:37
330 查看
//poj 1091 //sep9 #include <iostream> using namespace std; typedef long long ll; ll n,m,p[128]; int cnt; void init() { cnt=0; ll mm=m; for(ll i=2;i*i<=mm;++i){ if(mm%i==0){ p[cnt++]=i; while(mm%i==0) mm/=i; } } if(mm>1) p[cnt++]=mm; } ll quick_power(ll a,ll b) { ll res=1; while(b){ if(b&1) res*=a; a*=a; b/=2; } return res; } int main() { scanf("%lld%lld",&n,&m); init(); ll ans=0; for(int s=0;s<(1<<cnt);++s){ int num=0; ll tmp=1; for(int i=0;i<cnt;++i) if((s>>i)&1){ ++num; tmp*=p[i]; } ll tmp_ans=quick_power(m/tmp,n); if(num%2==0) ans+=tmp_ans; else ans-=tmp_ans; } printf("%lld",ans); return 0; }
相关文章推荐
- 初学ACM - 组合数学基础题目PKU 1833
- POJ ACM 1001
- POJ ACM 1002
- 1611:The Suspects
- POJ1089 区间合并
- POJ 2635 The Embarrassed Cryptographe
- POJ 3292 Semi-prime H-numbers
- POJ 2773 HAPPY 2006
- POJ 3090 Visible Lattice Points
- POJ-2409-Let it Bead&&NYOJ-280-LK的项链
- POJ-1695-Magazine Delivery-dp
- POJ1523 SPF dfs
- POJ-1001 求高精度幂-大数乘法系列
- POJ-1003 Hangover
- POJ-1004 Financial Management
- POJ1050 最大子矩阵和
- 用单调栈解决最大连续矩形面积问题
- 2632 Crashing Robots的解决方法
- 1573 Robot Motion (简单题)
- POJ 1200 Crazy Search(简单哈希)