[复习][NOIP2012真题]拓展欧几里得 同余方程
来源:互联网 发布:淘宝美工是平面美工吗 编辑:程序博客网 时间:2024/05/17 09:30
题目背景
NOIP2012 提高组 DAY2 试题。
题目描述
求关于 x 的同余方程 ax ≡ 1 (mod b)的最小正整数解。
输入格式
输入只有一行,包含两个正整数 a, b,用一个空格隔开。
输出格式
输出只有一行,包含一个正整数
样例数据
输入
3 10
输出
7
备注
【数据范围】
对于 40% 的数据,2≤b≤1,000;
对于 60% 的数据,2≤b≤50,000,000;
对于 100% 的数据,2≤a,b≤2,000,000,000。
分析:拓展欧几里得模板,如果不懂拓展欧几里得,详见zhj5chengfeng的博客。
代码
#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<string>#include<ctime>#include<cmath>#include<algorithm>#include<cctype>#include<iomanip>#include<queue>#include<set>using namespace std;int getint(){ int sum=0,f=1; char ch; for(ch=getchar();!isdigit(ch)&&ch!='-';ch=getchar()); if(ch=='-') { f=-1; ch=getchar(); } for(;isdigit(ch);ch=getchar()) sum=(sum<<3)+(sum<<1)+ch-48; return sum*f;}void exgcd(int a,int b,int &x,int &y)//x、y带&号表示在exgcd函数中x、y发生变化,主程序中x、y也会跟着变{ if(!b) { x=1,y=0; return; } exgcd(b,a%b,x,y); int tmp=x; x=y,y=tmp-a/b*y;}int main(){ freopen("exgcd.in","r",stdin); freopen("exgcd.out","w",stdout); int x,y,a,b; a=getint(),b=getint(); exgcd(a,b,x,y); cout<<(x%b+b)%b<<'\n'; return 0;}
本题结。
阅读全文
1 0
- [复习][NOIP2012真题]拓展欧几里得 同余方程
- noip2012同余方程 (拓展欧几里得)
- LuoguP1082[NOIP2012] 同余方程 解题报告【拓展欧几里得】
- noip2012 同余方程 (扩展欧几里得)
- 扩展欧几里得noip2012同余方程
- C++——拓展欧几里得模板——同余方程【NOIP2012提高组】
- 同余方程(拓展欧几里得模板)
- NOIP2012 同余方程
- 【noip2012】同余方程
- NOIP2012 同余方程
- noip2012同余方程
- 【NOIP2012】同余方程
- [NOIP2012] 同余方程
- NOIP2012 同余方程
- [noip2012]: 同余方程
- NOIP2012同余方程
- [NOIP2012]同余方程
- [NOIP2012]同余方程
- vmware 网络配置
- KNN算法--手写输入判断(Python3)
- C/C++中预编译(预处理)、编译、汇编、链接
- Shiro学习教程
- linux之lsof查看端口占用情况
- [复习][NOIP2012真题]拓展欧几里得 同余方程
- Java_并发线程_Future、FutureTask、Callable
- openresty源码安装
- ALS推荐算法理解及Spark编程实现
- virtualBox导入虚拟机后启动时报错
- JAVA的泛型特性和反射机制在泛型中的简单运用
- 动态代理之Proxy.newProxyInstance()
- 滤波器设计指标
- 使用Tensorflow构建和训练自己的CNN来做简单的验证码识别