【codevs1200】 NOIP2012—同余方程

codevs.cn/problem/1200/ (题目链接)

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

Solution 
   
  这道题其实就是求a mod b的逆元x。所谓逆元其实很简单,记a的关于模p的逆 
元为a^-1,则a^-1满足aa^-1≡ 1(mod p),用扩展欧几里德即可。 
  关于扩展欧几里德,有博客写了证明:blog.csdn.net/lincifer/article/details/49391175 
   
代码:

// codevs1200
#include<algorithm>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<cmath>
#define LL long long
#define inf 2147483640
#define Pi 3.1415926535898
#define free(a) freopen(a".in","r",stdin),freopen(a".out","w",stdout);
using namespace std;

void exgcd(LL a,LL b,LL &x,LL &y) {
    if (b==0) {x=1;y=0;return;}
    exgcd(b,a%b,x,y);
    LL t=x;x=y;y=t-a/b*y;
}
int main() {
    LL x,y,a,b;
    scanf("%lld%lld",&a,&b);
    exgcd(a,b,x,y);
    printf("%lld",(x+b)%b);
    return 0;
}

  

时间: 2024-08-10 21:41:21

【codevs1200】 NOIP2012—同余方程的相关文章

洛谷P1082/NOIP2012 同余方程

洛谷P1082/NOIP2012 同余方程 题目描述 求关于 x 的同余方程 ax ≡ 1 (mod b)的最小正整数解. 输入输出格式 输入格式: 输入只有一行,包含两个正整数 a, b,用一个空格隔开. 输出格式: 输出只有一行,包含一个正整数 x0,即最小正整数解.输入数据保证一定有解. 输入输出样例 输入样例#1: 复制 3 10 输出样例#1: 复制 7 说明 [数据范围] 对于 40%的数据,2 ≤b≤ 1,000: 对于 60%的数据,2 ≤b≤ 50,000,000: 对于 10

NOIP2012同余方程

描述 求关于 x的同余方程  ax ≡ 1(mod b) 的最小正整数解. 输入格式 输入文件 mod.in输入只有一行,包含两个正整数a,b,用一个空格隔开. 输出格式 输出文件 为 modmod .out .输出只有一行,包含一个正整数,包含一个正整数 ,包含一个正整数 x0,即最小正整数解. 输入据保证一定有解. 测试样例1 输入 3 10 输出 7 备注 对于 40% 的数据    2 ≤b≤1,000对于 60% 的数据    2 ≤b≤50,000,000对于 100%的数据    

COGS——T 1265. [NOIP2012] 同余方程

http://cogs.pro/cogs/problem/problem.php?pid=1265 ★☆   输入文件:mod.in   输出文件:mod.out   简单对比时间限制:1 s   内存限制:128 MB [题目描述] 求关于 x 的同余方程 ax ≡ 1 (mod b)的最小正整数解. [输入格式] 输入只有一行,包含两个正整数 a, b,用一个空格隔开. [输出格式] 输出只有一行,包含一个正整数X0,即最小正整数解.输入数据保证一定有解. [样例输入] 3 10 [样例输出

回档|NOIP2012 同余方程

题目描述 Description 求关于 x 的同余方程 ax ≡ 1 (mod b)的最小正整数解. 输入输出格式 Input/output 输入格式: 输入只有一行,包含两个正整数 a, b,用一个空格隔开. 输出格式: 输出只有一行,包含一个正整数 x0,即最小正整数解.输入数据保证一定有解. 输入:3 7 输出:10 题解:这道题我们先要看懂题意.题目的意思就是ax mod b=1,也就是ax-kb=1.考虑扩展的欧几里得定理.显然y可以是一个负值,我们的目的就是求一个最小的正整数x,让

[NOIP2012] 同余方程

题目描述 求关于 x 的同余方程 ax ≡ 1 (mod b)的最小正整数解. 输入 输入文件为 mod.in.输入只有一行,包含两个正整数 a, b,用一个空格隔开. 输出 输出文件为 mod.out.输出只有一行,包含一个正整数 x0,即最小正整数解.输入数据保证一定有解. 样例输入 3 10 样例输出 7 提示 [数据范围] 对于 40%的数据,2 ≤b≤ 1,000: 对于 60%的数据,2 ≤b≤ 50,000,000: 对于 100%的数据,2 ≤a, b≤ 2,000,000,00

NOIP2012同余方程[exgcd]

题目描述 求关于 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.

NOIP2012 同余方程 题解

描写叙述 求关于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. 分析:

数论/the second wave

扩展欧几里得算法. void exgcd(int a,int b,int&x,int&y){ if(!b) { x=1;y=0;return ; } exgcd(b,a%b,x,y); int temp=x;x=y;y=temp-a/b*y; } 1)ax+by=c. 有解的条件是c%gcd(a,b)==0,因为ax+by=gcd(a,b)一定有解. 设解是x0,y0,则通解 x=x0+(b/gcd(a,b))*t  y=y0-(a/gcd(a,b))*t 2)ax ≡1 (mod m)

noip2017考前整理(未完)

快考试了,把我以前写过的题回顾一下. Noip2007 树网的核:floyd,推出性质,暴力.Noip2008 笨小猴:模拟Noip2008 火柴棒等式:枚举Noip2008 传纸条:棋盘dpNoip2008 双栈排序:将复杂条件转化为简单约束,二分图染色判断可行性,模拟.Noi2010 能量采集:常见套路,求:ΣΣgcd(i,j),设t = gcd(i,j),能算出gcd=t的点对有(n/t) * (m/t)个,然后利用容斥原理减去2t,3t,--,kt的,倒序枚举.Noip2009 潜伏者: