Romantic(扩展欧几里得模板)
裴蜀定理:
任意整数 a, b,(a, b)|d ⇐⇒ ∃ 整数 x, y 使得
ax + by = d,即ax+by=d,那么d一定是gcd(a,b)的倍数
扩展欧几里得定理:
对于两个不全为0的整数a、b,必存在一组解x,y,使得ax+by==gcd(a,b);
题目中ax + by = 1,那么a,b需要满足互质,如果不互质就输出sorry,
之后就是扩展欧几里得的模板,因为a,b互质,最后求得的r一定是1,会得到一组x,y的解,这里还有一个结论:
假设d=gcd(a,b). 那么x=x0+b/dt; y=y0-a/dt;其中t为任意常整数
因为需要满足x>0那么对于求得的解x+=b,y-=a直到x>0
#include<bits/stdc++.h>
#include<tr1/unordered_map>
#define ls l,mid,rt<<1
#define rs mid+1,r,rt<<1|1
#define endl '\n'
#define ps puts("###")
#define int long long
using namespace std;
typedef long long ll;
typedef pair<int,int> PII;const int MAXN = 1e6+10;
const double EPS = 1e-12;
const ll mod = 1e9+7;// 扩展欧几里得算法(递归)
int exgcd(int a, int b, int &x, int &y)
{ if (a % b == 0) { x = 0; y = 1; return b; }else { int r, tx, ty; r = exgcd(b, a % b, tx, ty); x = ty; y = tx - a / b * ty; return r; }
} int n,m,p;
//int a[MAXN];
int T;
signed main()
{//ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);//cin>>T;//while(T--)int a,b;while(cin>>a>>b){if(__gcd(a,b)!=1){cout<<"sorry"<<endl;continue;}int x,y;//cout<<x<<' '<<y<<endl;exgcd(a,b,x,y);//cout<<x<<' '<<y<<endl;while(x<=0){x+=b,y-=a;}cout<<x<<" "<<y<<endl;}
}
Romantic(扩展欧几里得模板)相关推荐
- Romantic 扩展欧几里得
romantic 扩展欧几里得 #include<bits/stdc++.h> using namespace std; typedef long long ll; ll exgcd(ll ...
- 求逆元(线性求逆元)及其扩展欧几里得
线性求逆元模板: int inv[maxn]; void initInverse(){inv[1] = 1;for(int i = 2; i <= maxn; i++)inv[i] = (p - ...
- Codeforces7C 扩展欧几里得
Line Time Limit: 1000MS Memory Limit: 262144KB 64bit IO Format: %I64d & %I64u Submit Status ...
- qdu 2017级纳新题(扩展欧几里得)
在你面前撒个娇 哎呦喵喵喵喵喵 Description 我们一起学猫叫 一起喵喵喵喵喵 在你面前撒个娇 哎呦喵喵喵喵喵 我的心脏砰砰跳 迷恋上你的坏笑 你不说爱我我就喵喵喵 每当xjy和hqy一起唱起 ...
- [模板]欧几里得算法/扩展欧几里得
最大公因数(欧几里得算法) $gcd(a,b)=gcd(b\%a,a)$(不一定需要a<b) $gcd(0,b)=b$ 1 inline int gcd(int a,int b){ 2 retu ...
- 拓展欧几里得模板/求逆元模板(java)
拓展欧几里得模板 参考:哈尔滨理工大学ACM培训资料汇编/ACM-ICPC培训资料汇编* 基本原理 :设 a 和 b 不全为 0,则存在整数 x,y 使得 xa yb=gcd(a,b)=c 对于辗转相 ...
- POJ - 1061 青蛙的约会(扩展欧几里得)
题目链接:点击查看 题目大意:两只青蛙在一个单向循环数轴上跳动,给出初始位置和每秒跳动的距离以及数轴长度,问是否可以相遇,若能相遇求出最小时间 题目分析:自从第一次接触扩展欧几里得以来已经有半年时间了 ...
- 数论一之定理证明——裴蜀/威尔逊/费马/扩展欧几里得/[扩展]欧拉/[扩展]中国剩余定理,欧拉函数,逆元,剩余系,筛法
打死没想到会在H老师处学懂数论 同余,整除 模运算 埃式筛法 欧拉筛法 最大公约数和最小公倍数 辗转相除法 更相减损术 裴蜀定理 威尔逊定理 费马定理 同余等价类.剩余系.缩系 欧拉函数 欧拉定理 扩 ...
- POJ 1061扩展欧几里得
扩展欧几里得的模板题,需要注意的是为了得到一个最小正数解我们要使ax+by=c中的a,b都是正数 #include<cstdio> #include<cstring> #inc ...
最新文章
- db4o, 看上去很美
- redis mysql原理_MYSQL MONGODB REDIS 同步原理以及高可用性对比
- java 字节序列_java – 这个线程安全的字节序列生成器有什么问题?
- 深度学习之Image captioning的评分指标篇(BLEU、CIDEr)
- rhel7.5安装mysql8.0教程_RHEL7.5下mysql 8.0.11安装教程
- duilib中各控件响应的消息类型
- 使用wav2sbc.exe无法转换WAV文件问题
- 纯手工获取的WINDOWS 7 32位 SP1后续补丁集ver201509的官方下载地址
- kindle升级失败变砖(卡大树)维修步骤
- 零雨其蒙:Practicing Test-Driven Development by Example Using Delphi
- 儿童自行车品牌推荐全球十大儿童山地自行车品牌排行榜
- 喀纳斯与圣诞之夜(随想)
- 输出100以内的所有质数(每行10个)
- Android游戏破解练习-大圣觉醒
- VMware vSphere6.0 服务器虚拟化部署安装图解(转载火星小编)
- 虚拟机群晖找不到服务器,ESXI6.0安装群晖6.2,解决搜索不到IP问题。禁止转载
- Vue之非父子组件通信
- Idea关于复制包全名的设置
- LeetCode——1947. 最大兼容性评分和(Maximum Compatibility Score Sum)[中等]——分析及代码(Java)
- 笔记本计算机故障排除,笔记本电脑开不了机的原因与解决方法