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

  

posted @ 2022-10-06 11:02  我微笑不代表我快乐  阅读(17)  评论(0编辑  收藏  举报