• vijos1781 同余方程


    描述

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

    格式

    输入格式

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

    输出格式

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

    样例1

    样例输入1[复制]

     
    3 10

    样例输出1[复制]

     
    7

    限制

    每个测试点1s

    提示

    对于40%的数据,2 ≤b≤ 1,000; 
    对于60%的数据,2 ≤b≤ 50,000,000; 
    对于100%的数据,2 ≤a, b≤ 2,000,000,000。

    来源

    Noip2012提高组复赛Day2T1

     
    又是复习题……练练exgcd
    感觉这么水的题发上去显得我很没有水平
    算了……反正我也确实没水平
    #include<cstdio>
    #include<iostream>
    #include<cstring>
    #include<cstdlib>
    #include<algorithm>
    #include<cmath>
    #include<queue>
    #include<deque>
    #include<set>
    #include<map>
    #include<ctime>
    #define LL long long
    #define inf 0x7ffffff
    #define pa pair<int,int>
    #define pi 3.1415926535897932384626433832795028841971
    using namespace std;
    inline LL read()
    {
        LL x=0,f=1;char ch=getchar();
        while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
        while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
        return x*f;
    }
    int a,b,x,y;
    inline int gcd(int a,int b)
    {
    	if (!b)return a;
    	return gcd(b,a%b);
    }
    inline void exgcd(int a,int b,int &x,int &y)
    {
    	if (!b){x=1;y=0;return;}
    	exgcd(b,a%b,x,y);
    	int t=x;x=y;y=t-a/b*y;
    }
    int main()
    {
    	a=read();b=read();
    	exgcd(a,b,x,y);
    	x=(x%b+b)%b;
    	printf("%d
    ",x);
    }
    

      

    ——by zhber,转载请注明来源
  • 相关阅读:
    基于jQuery的鼠标悬停时放大图片的效果制作
    让document.write的广告无阻塞的加载
    浅谈DOM事件的优化
    前端自动化构建和发布系统的设计
    parseQueryString
    元素缩放
    apply用法
    3D旋转
    CSS居中的多种方法
    System Center Configuration Manager 2016 域准备篇(Part2)
  • 原文地址:https://www.cnblogs.com/zhber/p/4093498.html
Copyright © 2020-2023  润新知