zoukankan      html  css  js  c++  java
  • NOIP201208同余方程

    【问题描述】

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

    【输入格式】

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

    【输出格式】

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

    【样例输入】

    3 10

    【样例输出】

    7

    【数据范围】

    2≤a,b≤2,000,000,000。

    【题解】

    扩欧棵题,可以将式子转化为
    ax1+by1=gcd(a,-b)
    -bx2+(a%-b)y2=gcd(b,a%-b)
    解出
    x1=-y2
    y1=-(a/b)向下取整*y2-x2

    【代码】

    #include<algorithm>
    #include<iostream>
    #include<cstring>
    #include<cstdio>
    #include<cmath>
    #include<queue>
    #include<set>
    using namespace std;
    #define f(i,n) for(int i=1;i<=(n);i++)
    #define ll long long
    #define INF 1<<30
    #define N 100010
    ll read()
    {
     	ll x=0,f=1;char c=getchar();
     	while(!isdigit(c)){if(c=='-')f=-1;c=getchar();}
     	while( isdigit(c)){x=x*10+c-'0';c=getchar();}
     	return x*f;
    }
    ll a,b,x,y;
    void ko(ll a,ll b)
    {
    	if(b==0)
    	{
    		x=1;
    		y=0;
    		return;
    	}
    	ko(b,a%b);
    	ll t1=x;
    	x=-y;
    	y=-(a/b)*y-t1;
    }
    int main()
    {
    	a=read();
    	b=read();
    	ko(a,b);
    	printf("%lld",(x+b)%b);
    }
    
  • 相关阅读:
    qt的.pro配置总结
    【GOJ 1489】Monster Hunter
    CPU 杂谈
    【CF 1061C|GOJ 3505】Multiplicity
    【CF 1039D|GOJ 3502】You Are Given a Tree
    我跳过的坑
    【CF 1101D|GOJ 3501】GCD Counting
    【HDU 5269|GOJ 739】xor的最低位
    beta阶段组间的140字互评
    【第七周】【新蜂站会】3
  • 原文地址:https://www.cnblogs.com/qwerfcxs/p/7808260.html
Copyright © 2011-2022 走看看