codevs 1200 同余方程(扩展欧几里德)

来源:互联网 发布:淘宝虚拟网店取消 编辑:程序博客网 时间:2024/06/05 08:24

codevs 1200 同余方程

题目描述 Description
求关于 x 同余方程 ax ≡ 1 (mod b)的最小正整数解。

输入描述 Input Description
输入只有一行,包含两个正整数 a, b,用 一个 空格隔开。

输出描述 Output Description
输出只有一行包含一个正整数x0,即最小正整数解,输入数据保证一定有解。

样例输入 Sample Input
3 10

样例输出 Sample Output
7

数据范围及提示 Data Size & Hint
【数据范围】
对于 40% 的数据, 2 ≤b≤ 1,000 ;
对于 60% 的数据, 2 ≤b≤ 50,000,000
对于 100% 的数据, 2 ≤a, b≤ 2,000,000,000

题解:

#include<iostream>#include<cstdio>using namespace std;void exgcd(long long a,long long b,long long &x,long long &y){    if(b==0)    {        x=1,y=0;        return;    }    exgcd(b,a%b,x,y);    long long r=y;    y=x-(a/b)*y;    x=r;}int main(){    long long a,b,x,y;    scanf("%lld%lld",&a,&b);    exgcd(a,b,x,y);    x=((x%b)+b)%b;    printf("%lld",x);    return 0;}
3 0
原创粉丝点击