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 }
View Code

 

以上是关于NOIP2012 同余方程-拓展欧几里得的主要内容,如果未能解决你的问题,请参考以下文章

同余方程(NOIP2012)

扩展欧几里得NOIP2012同余方程

扩展欧几里得模板(洛谷1082 同余方程NOIP 2012 提高组 第二天 第一题)

codevs1200 NOIP2012—同余方程

NOIP 2012 Day2

NOIP提高组2012 同余方程