【noip2012】同余方程
2015-11-03 15:30
232 查看
【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%的数据 2 ≤a, b≤2,000,000,000NOIP2012-TG
由ax ≡ 1(mod b) 可以推出(ax-1)%b=0
那么ax%b=1,ax-kb=1
题目又说保证一定有解
那么就一定存在整数x,k,使ax-kb=1
由裴蜀定理可知,ax-kb=1与gcd(a,b)=1是充要条件
所以ax-kb=gcd(a,b),这就变成了扩展欧几里德的基本形式
那么我们就可以求出一组解x,y
根据
x加上b/gcd(a,b),同时y减去a/gcd(a,b)后,仍满足ax+by=c
我们可以求出最小的整数解
【代码】
#include<iostream> #include<cstring> #include<cstdio> using namespace std; int a,b,x,y,ans; int ExGcd(int a,int b){ if (b==0){ x=1; y=0; return a; } ans=ExGcd(b,a%b); int tmp=y; y=x-(a/b)*y; x=tmp; return ans; } int main(){ scanf("%d%d",&a,&b); int gcdx=ExGcd(a,b); x=(x%b+b)%b; printf("%d",x); }
相关文章推荐
- Activity与Fragment的生命周期
- 2015acm区域赛长春
- 1.Linux编程学习开篇
- R语言与数据分析【第1季】
- excel格式化
- excel格式化
- iOS 集成环信(四) 群聊
- C++primer第五版第一章学习笔记
- 锁表参数 enque/table_size via ECC6 EHP7
- 学习Web应用漏洞最好的教程----WebGoat
- AOSP镜像清华版
- C#图片处理像素质量等代码问题
- 搞清楚脚本中这些函数的调用规律 .
- 性能测试中SQL引起的性能问题
- PHP生成简单计算的验证码,模仿CSDN
- Activity与Fragment的生命周期
- Airplace平台
- Android 实现图片滚动控件,含页签功能,让你的应用像淘宝一样炫起来
- hdu 2859 Phalanx(字符匹配)
- 使用const引用传递来提高效率