Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
感觉容斥原理那个公式变成乘法比较好写#include <cstdio> using namespace std; long long quickpow(long long m,long long n){ long long res=1; while(n){ if(n&1) res*=m; m*=m; n>>=1; } return res; } long long ans(long long n,long long m){ long long f=quickpow(m,n); long long x=m; for(long long i=2;i*i<=x;i++){ if(m%i==0){ long long q=quickpow(i,n); f=f/q*(q-1); while(m%i==0) m/=i; } } if(m>1) f=f/quickpow(m,n)*(quickpow(m,n)-1); return f; } int main(){ long long n,m; while(scanf("%I64d%I64d",&n,&m)!=EOF) printf("%I64d\n",ans(n,m)); return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator