列表

详情


NC16563. [NOIP2012]同余方程

描述

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

输入描述

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

输出描述

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

示例1

输入:

3 10

输出:

7

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++14(g++5.4) 解法, 执行用时: 3ms, 内存消耗: 476K, 提交时间: 2018-09-09 15:33:33

#include <bits/stdc++.h>
using namespace std;
int a,b,x,y,d;
void exgcd(int a, int b){
    if(b) exgcd(b,a%b),d=x, x=y, y=d-a/b*y;
    else x=1, y=0;
}
int main(){
    scanf("%d%d",&a,&b);
    exgcd(a,b);
    printf("%d",(x+b)%b);
    return 0;
}

C++11(clang++ 3.9) 解法, 执行用时: 4ms, 内存消耗: 468K, 提交时间: 2019-11-04 18:37:29

#include<cstdio>
void exgcd(int a,int b,int &x,int &y) {!b?(x=1,y=0):(exgcd(b,a%b,y,x),y-=a/b*x);}
int main()
{
    int a,b,x,y;
    scanf("%d%d",&a,&b);
    exgcd(a,b,x,y);
    printf("%d",(x%b+b)%b);
}

pypy3 解法, 执行用时: 125ms, 内存消耗: 25836K, 提交时间: 2022-04-21 09:39:21

def exGCD(a, b):
    if b == 0:
        return a, 1, 0
    g, x1, y1 = exGCD(b, a%b)
    return g, y1, x1-a//b*y1

a, b = map(int, input().split())
g, x, y = exGCD(a, b)
print(x % b)

Python3 解法, 执行用时: 40ms, 内存消耗: 4592K, 提交时间: 2023-07-31 15:19:10

a,b = map(int,input().split())
print(pow(a,-1,b))

上一题