noip同余方程
暴力2
#include<bits/stdc++.h> #define int long long using namespace std; signed main(){ int a,b; cin>>a>>b; for(int i=1;;++i){ if((i*b+1)%a==0){ cout<<(i*b+1)/a; return 0; } } return 0; }
暴力1
#include<bits/stdc++.h> using namespace std; int main(){ long long a,b; scanf("%ld%ld",&a,&b); for(long long i=1;i;i++){ if(i*a%b==1) { printf("%ld",i); return 0; } } return 0; }
使用欧拉定理
#include <bits/stdc++.h> using namespace std; int main() { long long a,b; cin>>a>>b; long long bb; long long c=b; bb=b; for(int i=2;i<=sqrt(b);i++) { if(b%i==0) { c=c-c/i; while(b%i==0)b/=i; } } if(b>1) c=c-c/b; c--; long long ans=1; while (c) { if (c%2==1) ans=ans*a%bb; c=c/2; a=a*a%bb; } cout<<ans<<endl; }