扩展gcd codevs 1200 同余方程
codevs 1200 同余方程
2012年NOIP全国联赛提高组
求关于 x 同余方程 ax ≡ 1 (mod b)的最小正整数解。
输入只有一行,包含两个正整数 a, b,用 一个 空格隔开。
输出只有一行包含一个正整数x0,即最小正整数解,输入数据保证一定有解。
3 10
7
【数据范围】
对于 40% 的数据, 2 ≤b≤ 1,000 ;
对于 60% 的数据, 2 ≤b≤ 50,000,000
对于 100% 的数据, 2 ≤a, b≤ 2,000,000,000
分类标签 Tags 点此展开
/* ax ≡ 1 (mod b)就是ax=by+1,而且x,y都为整数,所以ax mod b==1,对于ax=by+1,用扩展gcd求解,再用找到合适的x输出即可*/
#include<iostream>
using namespace std;
#include<cstdio>
long long a,b;
void exgcd(long long a,long long b,long long &x,long long &y,long long &gcd)
{
if(b==)
{
gcd=a;x=;y=;
return;
}
exgcd(b,a%b,x,y,gcd);
int t=x;
x=y;
y=t-(a/b)*y;
}
int main()
{
cin>>a>>b;
long long gcd,x,y;
exgcd(a,b,x,y,gcd);
long long a0=a/gcd,b0=b/gcd;
long long k=/gcd;
x*=k;y*=k;
if(x<=)
{
int i=;
while()
{
if(a*(x+i*b0)+b*(y-i*a0)==)
{
if(x+i*b0>)
{
cout<<(x+i*b0)<<endl;
return ;
}
}
i++;
}
}
if(x>)
{
int i=-;
while()
{
if(a*(x+i*b0)+b*(y-i*a0)==)
{
if(x+i*b0<)
{
cout<<x<<endl;
return ;
}
}
i--;
}
}
return ;
}
扩展gcd codevs 1200 同余方程的更多相关文章
- [NOIP2012提高组] CODEVS 1200 同余方程(扩展欧几里德算法)
数论题..所有数论对我来说都很恶心..不想再说什么了.. ------------------------------------------------ #include<iostream&g ...
- Codevs 1200 同余方程 2012年NOIP全国联赛提高组
1200 同余方程 2012年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 求关于 x 同余方程 a ...
- 扩展gcd codevs 1213 解的个数
codevs 1213 解的个数 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 已知整数x,y满足如下面的条件: ax+by ...
- codevs 1200 同余方程 (Extend_Eulid)
/* 扩展欧几里得 ax%b==1 -> ax-by==1 求不定方程的一组解 使x为最小正整数解 */ #include<iostream> #include<cstdio& ...
- codevs 1200 同余方程 逆元
题目描述 Description 求关于 x 同余方程 ax ≡ 1 (mod b)的最小正整数解. 输入描述 Input Description 输入只有一行,包含两个正整数 a, b,用 一个 空 ...
- codevs 1200 同余方程 2012年NOIP全国联赛提高组 x
/*我在提交的时候发现了一个特别好玩的事,有兴趣的话,可以自己尝试一下:把下面说的地方的y=0改为y=1在codevs里面能够ac,这……数据水?到一定境界……厉害了,吓得我还以为自己对了,结果一讲才 ...
- 模板—扩展GCD*2
有必要重新学一下扩展GCD emmmm. 主要是扩展GCD求解线性同余方程$ax≡b (mod p)$. 1.方程有解的充分必要条件:b%gcd(a,p)=0. 证明: $ax-py=b$ 由于求解整 ...
- UESTC 288 青蛙的约会 扩展GCD
设两只青蛙跳了t步,则此时A的坐标:x+mt,B的坐标:y+nt.要使的他们在同一点,则要满足: x+mt - (y+nt) = kL (p是整数) 化成: (n-m)t + kL = x-y (L ...
- 详解扩展欧几里得算法(扩展GCD)
浅谈扩展欧几里得(扩展GCD)算法 本篇随笔讲解信息学奥林匹克竞赛中数论部分的扩展欧几里得算法.为了更好的阅读本篇随笔,读者最好拥有不低于初中二年级(这是经过慎重考虑所评定的等级)的数学素养.并且已经 ...
随机推荐
- koa源码阅读[2]-koa-router
koa源码阅读[2]-koa-router 第三篇,有关koa生态中比较重要的一个中间件:koa-router 第一篇:koa源码阅读-0第二篇:koa源码阅读-1-koa与koa-compose k ...
- 黑色的企业网站后台管理模板html源码
链接:http://pan.baidu.com/s/1kUMqDU3 密码:83xt
- 蓝色的cms网站后台管理模板——后台
链接:http://pan.baidu.com/s/1c138cwC 密码:9vy9
- 宝塔Linux面板新手安装教程【转】
一.使用远程连接软件 (如 Putty.XShell) 连接你的Linux服务器,本教程以 Putty 为例. 1.动 Putty.exe 程序,进入 Putty 主界面. 2.在 Host Name ...
- SVM资料
解释SMO算法比较好的文档 http://wenku.baidu.com/view/aeba21be960590c69ec3769e.html 参考博客: http://myjuno.blogbus. ...
- 网页转图片,html生成图片,网页生成图片(基于linnux+phantomjs)和wkhtmltoimage
安装扩展: (1)下面是我在linux上的安装过程,如果没有安装git请先yum install git 安装casperjs cd / git clone git://githu ...
- 安全控制 iptables
转自:http://www.opsers.org/linux-home/videos/chapter-netfilter-iptables-raiders.html 内容简介防火墙的概述iptable ...
- (五)Spring 对事务的支持
第一节:事务简介 满足一下四个条件: 第一:原子性: 第二:一致性: 第三:隔离性: 第四:持久性: ------------------------------------------------- ...
- NIO-3网络通信
import java.io.IOException; import java.net.InetSocketAddress; import java.nio.ByteBuffer; import ja ...
- 用js 的for循环打印三角形,提取水仙花数,求本月多少天
第一题:用for循环打印三角形 //第一个 for(var x = 1;x <= 4;x++){ //控制行数 :由 1 到 4 for(var y = 1;y <= x;y++){ // ...