• 3102. 【NOIP2012提高组】同余方程


    Description

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

    Input

    输入文件为 mod. in。

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

    Output

    输出文件为mod.out。

    输出只有一行,包含一个正整数 x ,即最小正整数解。输入数据保证一定有解。

    Sample Input

    3 10

    Sample Output

    7

    Hint

    对于40%的数据,2 ≤b≤ 1,000;

    对于60%的数据,2 ≤b≤ 50,000,000;

    对于100%的数据,2 ≤a, b≤ 2,000,000,000。

    solution

    这不就是个裸的扩展欧几里得嘛。
    ax ≡ 1 (mod b)
    ax ≡ by+1
    ax-by ≡ 1
    乱搞即可。

    code

    #include<cstdio>
    using namespace std;
    int a,b,x,y,t;
    int exgcd(int a,int b)
    {
    	if (!b) x=1,y=0;
    	else
    	{
    		exgcd(b,a%b);
    		t=y,y=x-(a/b)*y,x=t;
    	}
    }
    int main()
    {
    	scanf("%d%d",&a,&b);
    	exgcd(a,b);
    	if (x>b) printf("%d
    ",x%b);
    	else if (x<0) printf("%d
    ",x%b+b);
    	else printf("%d
    ",x);
    }
    
    转载需注明出处。
  • 相关阅读:
    python 2 和 python 3 的区别
    random模块、time模块、sys模块、os模块
    正则表达式
    生成器 推导式 生成器表达式
    免费的论文查重网站
    Django 13
    pycharm连接mysql出错解决方案
    前端 51
    前端 50
    前段 49
  • 原文地址:https://www.cnblogs.com/jz929/p/11817560.html
Copyright © 2020-2023  润新知