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

    题目描述

    求关于 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。

    NOIP 2012 提高组 第二天 第一题

     分析;

      ax ≡ 1 (mod b)   <=>  a*x+b*y=1

      先用扩展欧几里得算法得到一组解,根据线性方程去找所要求的  最小整数解 。

      

    #include<iostream>
    #include<algorithm>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    int gcd(int a,int b,int &x,int &y)
    {
        int ret,tmp;
        if(!b)
        {
            x=1;
            y=0;
            return a;
        }
        ret=gcd(b,a%b,x,y);
        tmp=x;
        x=y;
        y=tmp-a/b*y;
        return ret; 
    } 
    
    int    main()
    {
        int a,b,x,y,z;    
        scanf("%d%d",&a,&b);    
        gcd(a,b,x,y);
        cout<<(x+b)%b;//结果可能为负,转正一下
        return 0;
    }
  • 相关阅读:
    1. jQuery中的DOM操作
    jQuery查找节点(选择器)
    机器学习基础
    CRF
    NP
    LP
    kernel
    SVM
    凸优化和对偶
    语音识别 -- 概述
  • 原文地址:https://www.cnblogs.com/CLGYPYJ/p/6879410.html
Copyright © 2011-2022 走看看