NOIP2012 同余方程-拓展欧几里得
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NOIP2012 同余方程-拓展欧几里得相关的知识,希望对你有一定的参考价值。
题目描述
求关于 x 的同余方程 ax ≡ 1 (mod b)的最小正整数解。
输入输出格式
输入格式:
输入只有一行,包含两个正整数 a, b,用一个空格隔开。
输出格式:
输出只有一行,包含一个正整数 x0,即最小正整数解。输入数据保证一定有解。
1 #include<iostream> 2 #include<cstring> 3 #include<cstdio> 4 #include<cstdlib> 5 #include<cmath> 6 #include<algorithm> 7 #define LL long long 8 #define FOR(a,b,c) for(int a=b;a<=c;a++) 9 #define maxn 1024 10 using namespace std; 11 LL a,b,d,x,y,k; 12 void ggcd(LL a,LL b,LL &d,LL &x,LL &y){ 13 if(b==0){ 14 d=a; 15 x=1; 16 y=0; 17 }else{ 18 ggcd(b,a%b,d,y,x); 19 y-=x*(a/b); 20 } 21 } 22 int main() 23 { 24 scanf("%lld%lld",&a,&b); 25 ggcd(a,b,d,x,y); 26 k=b/d; 27 while(x>=0) x-=k; 28 while(x<=0) x+=k; 29 printf("%lld",x); 30 return 0; 31 }
以上是关于NOIP2012 同余方程-拓展欧几里得的主要内容,如果未能解决你的问题,请参考以下文章