https://vijos.org/p/1009
这个exgcd我 复制 推一遍
对于ax+by=c
我们先算ax+by=(a,b) (这个是最大公约数)
然后把解乘上c/(a,b)即可;
所以显然当(a,b)|c时有x,y解;
设A = b, B = a mod b。(这个就是普通的gcd哦)
那么考虑方程Ax′+By′=(a,b), 也就是bx′+(a %b)y′=(a, b)
假如我们求出了x’,y’怎么求x,y;
a%b=a-a/b*b(a/b下取整)拆开再合并就是
ay′+b(x′−⌊a/b⌋ y′)=(a,b)
所以答案就是
x=y′, y=x′ −⌊a/b⌋ y′
那我们怎么求x’,y’
可以递归;
递归到最后b就会是0,这个跟gcd是一样的

我们在不断递归的时候
a和b最终就会变成(a,b)和0
因为a,b的递归过程和gcd的递归过程是一样的;
那么这样的话,我们仅仅需要把x=1,y=0便可以愉快的构造一组解

void exgcd(Ll a,Ll b,Ll &x,Ll &y){if(!b){x=1;y=0;return;}exgcd(b,a%b,x,y);int X=x;x=y; y=X-a/b*y;
}

不过出题人可以卡long long,所以要快速乘,当然这个是毒瘤题;
http://blog.csdn.net/Fop_zz/article/details/55000973
这里的exgcd更简短,但本质是一样的;
还有,比如ax+by=c;
那么对于x 两个相邻的解相差b/gcd(a,b)
因为
ax+by=c等价于a(x+b)+b(y-a)=c;


这道题我们可以这样;
我们设走k步;
x+kn=y+km(mod l)
后面的括号是膜域;
就是在0~l-1的范围里;
然后我们可以再设一个kk代表(x+kn)/l
就是走了几圈;
然后就变成了
k(n-m)-kkl=y-x;
这个和ax+by=c一样的;
然后exgcd好了;
求出来x后要乘(c/gcd(a,b)),这个在上面解释了;
但是x可能是负数或者;
这个时候再搞一下就好了;

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
#define Ll long long
using namespace std;
Ll x,y,n,m,l,ans;
Ll gcd(Ll x,Ll y){return y?gcd(y,x%y):x;}
void exgcd(Ll a,Ll b,Ll &x,Ll &y){if(!b){x=1;y=0;return;}exgcd(b,a%b,x,y);int X=x;x=y; y=X-a/b*y;
}
int main()
{
//其实x,y一开始要-1的,因为是膜域,但是因为我们算差,所以不用管scanf("%lld%lld%lld%lld%lld",&x,&y,&n,&m,&l);int a=0,b=l,c=0;
//  a=((m-n)%l+l)%l;//这里两种都行
//  c=((x-y)%l+l)%l;a=((n-m)%l+l)%l;c=((y-x)%l+l)%l;int g=gcd(a,b);if(c%g){printf("Impossible");return 0;}exgcd(a,b,x,y);x=x*c/g;l=l/g;//这里ax+by=c的b就是lx=(x%l+l)%l;//x>=0且最优 printf("%d",x);
}

7个月后AFO前又写了一遍,哇了半天;
就是要注意魔域的问题,要把负数变成L状态下的值,而并不是大力求解

#include<bits/stdc++.h>
#define Ll long long
using namespace std;
Ll n,m,a,b,L,x,y;
void exgcd(Ll a,Ll b,Ll &x,Ll &y){if(!b)x=1,y=0;else exgcd(b,a%b,y,x),y=y-a/b*x;}
Ll gcd(Ll x,Ll y){return y?gcd(y,x%y):x;}
int main()
{cin>>a>>b>>m>>n>>L;Ll A=((m-n)%L+L)%L,B=L,C=(b-a+L)%L,G=gcd(A,B);if(C%G){puts("Impossible");return 0;}exgcd(A,B,x,y);x*=C/G;B/=G;cout<<(x%B+B)%B;
}

exgcd-清帝之惑之康熙相关推荐

  1. vijos P1009清帝之惑之康熙

    </pre>背景康熙是中国历史乃至世界历史中最伟大的帝王之一,清除螯拜,撤除三藩,统一台湾,平定准葛尔叛乱:与此同时,出众的他也被世界各国遣清使臣所折服.康熙是历史上少有的全人,不仅文武兼 ...

  2. [Vijos1009] 清帝之惑之康熙

    题目背景 康熙是中国历史乃至世界历史中最伟大的帝王之一,清除螯拜,撤除三藩,统一台湾,平定准葛尔叛乱:与此同时,出众的他也被世界各国遣清使臣所折服.康熙是历史上少有的全人,不仅文武兼得,而且在各各方面 ...

  3. vijos P1009 清帝之惑之康熙

    用扩展欧几里得算法求解线性同余方程就可以了,要注意求出来的应该是最小非负数. 等价于求方程k(m-n)与(y-x)关于l同余,k为非负整数的解  方程:  k*(m-n)-ld=y-x  若y-x不是 ...

  4. P1011清帝之惑之顺治

    背景 顺治帝福临,是清朝入关后的第一位皇帝.他是皇太极的第九子,生于崇德三年(1638)崇德八年八月二ten+six日在沈阳即位,改元顺治,在位18年.卒于顺治十八年(1661),终24岁. 顺治即位 ...

  5. Vijos 1010 清帝之惑之乾隆

    背景 乾隆,雍正的第四子,在位60年,退位后又当了三年太上皇,终年89岁. 乾隆即位之初,实行宽猛互济的政策,务实足国,重视农桑,停止捐纳,平定叛乱等一系列活动中,充分体现了他的文治武功,乾隆帝向慕风 ...

  6. vijos 1011 清帝之惑之顺治 (记忆化搜索)

    背景 顺治帝福临,是清朝入关后的第一位皇帝.他是皇太极的第九子,生于崇德三年(1638)崇德八年八月二ten+six日在沈阳即位,改元顺治,在位18年.卒于顺治十八年(1661),终24岁. 顺治即位 ...

  7. 清亡之路(9):南北谈判和清帝退位

    解决了滦洲兵变之后,袁世凯更关心如何对付武昌的"叛军",以及相继独立的南方数十省,甚至还有北方数省.袁世凯明白,北洋新军再厉害,可能也打不过这么多省. 黎元洪为代表的南方认为,如果 ...

  8. 历史上康熙皇帝真的很喜欢微服私访吗?

    说起康熙皇帝我们都知道他被称为千古一帝,平三藩,收台湾,统一全国功绩卓著.可是在显赫的背后康熙皇帝还一直亲民的一面,那就是喜欢微服私访.那么康熙皇帝到底是否真的喜欢微服私访呢? 前几年由张国立主演的康 ...

  9. 清朝皇帝年表及1840年后清朝历史事件

    一.清朝皇帝年代顺序表 清朝皇帝按时间排列为: 1.努尔哈赤(太祖),年号天命,1616年登基,在位11年. 2.皇太极(太宗),年号天聪.崇德,1627年登基,在位10年. 3.福临(世祖),年号顺 ...

最新文章

  1. PHPStudy 安装 Imagick 报错:无法定位程序输入点 于动态链接库上
  2. VS2012 无法打开文件“kernel32.lib”问题的解决办法
  3. js进阶 11-16 jquery如何查找元素的父亲、祖先和子代、后代
  4. 最长重复子串(Rabin-Karp算法)
  5. 【Linux】一步一步学Linux——export命令(211)
  6. SCM基础之过程描述
  7. confluence创建页面加载缓慢_树莓派4B使用docker安装confluence
  8. 安装JDK与配置java环境变量
  9. C语言-求阶乘的两种方法
  10. One Pixel Attack(对抗攻击) —— 使用差分进化算法寻找最优解
  11. Mac OS X: FileVault 2在美洲狮10.8上的扩展
  12. 方德系统装exe文件_国产处理器+自主OS完美运行exe程序?英特尔认为有侵权嫌疑...
  13. 重新定义工作站的“边界”
  14. 衣橱管理APP——《衣橱管家》立项书(产品分析
  15. 《计算方法》笔记之(二)线性代数方程组之Gauss消去法
  16. PDF文章复制到翻译软件去空格问题(仅分享)
  17. 人生之事须尽欢,莫问前途
  18. web优化之YSlow的使用
  19. 弹性盒模型的实际应用
  20. aardio工具提示控件的简单实例

热门文章

  1. 全国主要城市交通卡芯片一览
  2. 【 C++11 】可变参数模板
  3. 级联样式表_级联样式表| 第1部分
  4. 极简时间计算器:Time Calc Pro Mac
  5. AOC Q2790PQ 显示器 OSD锁定 解决方法
  6. 更改移动硬盘储存格式(背景:iPadOS无法识别)
  7. 计算机软件摊销会计分录,请问老师:自行研发的无形资产摊销的会计分录怎么做(1)借:管理费? 爱问知识人...
  8. 2021-2027全球与中国宠物寄养市场现状及未来发展趋势
  9. JAVA中哈希表的使用-遍历map集合
  10. 瑞芯微SDK环境+docker环境外部访问