codevs1200 同余方程 (2012年NOIP全国联赛提高组)拓展欧几里得
2017-05-10 21:09
483 查看
题目描述 Description
求关于 x 同余方程 ax ≡ 1 (mod b)的最小正整数解。
输入描述 Input Description
输入只有一行,包含两个正整数 a, b,用 一个 空格隔开。
输出描述 Output Description
输出只有一行包含一个正整数x0,即最小正整数解,输入数据保证一定有解。
样例输入 Sample Input
3 10
样例输出 Sample Output
7
数据范围及提示 Data Size & Hint
【数据范围】
对于 40% 的数据, 2 ≤b≤ 1,000 ;
对于 60% 的数据, 2 ≤b≤ 50,000,000
对于 100% 的数据, 2 ≤a, b≤ 2,000,000,000
思路:拓展欧几里得模板
代码如下
求关于 x 同余方程 ax ≡ 1 (mod b)的最小正整数解。
输入描述 Input Description
输入只有一行,包含两个正整数 a, b,用 一个 空格隔开。
输出描述 Output Description
输出只有一行包含一个正整数x0,即最小正整数解,输入数据保证一定有解。
样例输入 Sample Input
3 10
样例输出 Sample Output
7
数据范围及提示 Data Size & Hint
【数据范围】
对于 40% 的数据, 2 ≤b≤ 1,000 ;
对于 60% 的数据, 2 ≤b≤ 50,000,000
对于 100% 的数据, 2 ≤a, b≤ 2,000,000,000
思路:拓展欧几里得模板
代码如下
#include<iostream> #include<algorithm> #include<string> #include<cstdio> #include<cstring> #include<queue> #include<vector> #include<cstring> using namespace std; #define ll long long ll exgcd(ll a,ll b,ll& x,ll& y){ if(!b){ x=1; y=0; return x; } else{ exgcd(b,a%b,y,x); y-=x*(a/b); } return x; } int main(){ ll a,b,x,y; cin>>a>>b; exgcd(a,b,x,y); x=(x%b+b)%b; cout<<x<<endl; return 0; }
相关文章推荐
- 1200 同余方程 2012年NOIP全国联赛提高组
- Codevs 1200 同余方程 2012年NOIP全国联赛提高组
- codevs 1200 同余方程 2012年NOIP全国联赛提高组 x
- Codevs 1217 借教室 2012年NOIP全国联赛提高组
- Codevs 1218 疫情控制 2012年NOIP全国联赛提高组
- 1217 借教室 2012年NOIP全国联赛提高组[迷之不能自拔]
- 借教室 2012年NOIP全国联赛提高组
- 同余方程 2012年NOIP全国联赛提高组
- Vigenère密码 2012年NOIP全国联赛提高组(字符串模拟)
- 國王遊戲(2012年NOIP全国联赛提高组)
- 国王游戏 2012年NOIP全国联赛提高组(贪心+高精)
- C++——拓展欧几里得模板——同余方程【NOIP2012提高组】
- 【Codevs】1197 Vigenère密码 --2012年NOIP全国联赛提高组
- 疫情控制 2012年NOIP全国联赛提高组(二分答案+贪心)
- Codevs 1198 国王游戏 2012年NOIP全国联赛提高组
- 开车旅行 2012年NOIP全国联赛提高组(倍增+set)
- wikioi 1169 传纸条 (2008年NOIP全国联赛提高组)
- wikioi 1017 乘积最大 (2000年NOIP全国联赛普及组NOIP全国联赛提高组)
- Codevs 1172 Hankson 的趣味题 2009年NOIP全国联赛提高组
- 棋盘型动态规划 之 CODE[VS] 1169 传纸条 2008年NOIP全国联赛提高组