首页 > 代码库 > NOIP2012 同余方程-拓展欧几里得
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 同余方程-拓展欧几里得
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。