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;
}

浙公网安备 33010602011771号