裸题: 扩展欧拉定理的应用
1 #include<bits/stdc++.h> 2 using namespace std; 3 int ph(int x){ 4 int ret=x; 5 for(int i=2;i*i<=x;i++) 6 if(x%i==0){ 7 ret=ret/i*(i-1); 8 while (x%i==0) x/=i; 9 }10 if(x>1) ret=ret/x*(x-1); 11 return ret; 12 } 13 int main(){14 int a,b=0,m,check=0; 15 scanf("%d%d",&a,&m); 16 int t=ph(m); 17 char c; 18 while ((c=getchar()) && !isdigit(c)); 19 while (isdigit(c)){20 b=b*10+(c^48); 21 while (b>=t) b-=t,check=1; 22 c=getchar(); 23 } 24 if(check) b=b+t; 25 int ans=1; 26 for(int i=0;i<=20;i++){27 if(b&(1<<i)) ans=1LL*ans*a%m; 28 a=1LL*a*a%m; 29 }30 printf("%d\n",ans); 31 return 0; 32 }VIEw Code 总结
以上是内存溢出为你收集整理的luogu 5091 欧拉定理全部内容,希望文章能够帮你解决luogu 5091 欧拉定理所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)