• NOIP2012 同余方程


    1同余方程

    题目描述

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

    输入输出格式

    输入格式:

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

    输出格式:

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

    输入输出样例

    输入样例#1:

    3 10

    输出样例#1:

    7

    说明

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

    【思路】

    数学方法:拓展欧几里得算法解同余方程。

    【代码】

     1 #include<iostream>
     2 using namespace std;
     3 
     4 int a,b;
     5 int gcd(int a,int b) {
     6     return b==0?a: gcd(b,a%b);
     7 }
     8 void ojilid(int a,int b,int& d,int& x,int& y) {
     9     if(!b) { d=a; x=1; y=0; }
    10     else { ojilid(b,a%b,d,y,x); y-=x*(a/b); }
    11 }
    12 
    13 int main() {
    14     cin>>a>>b;
    15     int g=gcd(a,b);
    16     int x,y,d;
    17     ojilid(a,b,d,x,y);
    18     
    19     while(x<0) x+=b;
    20     cout<<x;
    21 }
  • 相关阅读:
    smm框架整合实现登录功能
    Java线程面试题
    JAVA面试题
    Linux基础命令
    Java面试题技术类
    Spring+Spring MVC+MyBatis框架集成
    C语言 编程练习22题
    C语言 基础练习40题
    Python3-socket网络知识储备
    python3-面向对象进阶(内置方法)
  • 原文地址:https://www.cnblogs.com/lidaxin/p/4859317.html
Copyright © 2020-2023  润新知