POJ1061 青蛙的约会(线性同余方程)
2016-02-03 16:31
399 查看
线性同余方程$ ax \equiv b \pmod n$可以用扩展欧几里得算法求解。
这一题假设青蛙们跳t次后相遇,则可列方程:
$$ Mt+X \equiv Nt+Y \pmod L$$
$$ (M-N)t \equiv Y-X \pmod L$$
于是就构造出一个线性同余方程,即可对t求解,解出最小非负整数解。
这一题假设青蛙们跳t次后相遇,则可列方程:
$$ Mt+X \equiv Nt+Y \pmod L$$
$$ (M-N)t \equiv Y-X \pmod L$$
于是就构造出一个线性同余方程,即可对t求解,解出最小非负整数解。
#include<cstdio> #include<cstring> using namespace std; #define mod(x,y) (((x)%(y)+(y))%(y)) #define lld long long //a*x+b*y=gcd(a,b) lld exgcd(lld a,lld b,lld &x,lld &y){ if(b==0){ x=1; y=0; return a; } lld d=exgcd(b,mod(a,b),x,y); lld t=y; y=x-a/b*y; x=t; return d; } //ax¡Ôb (mod n) lld MLES(lld a,lld b,lld n){ lld x,y; lld d=exgcd(a,n,x,y); if(b%d) return -1; return mod(x*(b/d),n/d); } int main(){ lld x,y,m,n,l; scanf("%lld%lld%lld%lld%lld",&x,&y,&m,&n,&l); lld res=MLES(m-n,y-x,l); if(res==-1) puts("Impossible"); else printf("%lld",res); return 0; }
相关文章推荐
- 20分钟轻松制作移动网站
- RecyclerView实例-实现可下拉刷新上拉加载更多并可切换线性流和瀑布流模式(1)
- 打jar包
- 打jar包
- 解决server 2012下 wamp 启动80端口被占用问题
- Imageview 加载网络图片 图片动态处理 图片不变形的方法
- Bootstrap
- 横扫天下官网开发总结
- 使用dd制作文件夹的img
- 智能电视局域网手机遥控实现
- 少有人走的路 读书笔记二
- Redis系列学习(一)安装与配置(基于Centos7)
- BZOJ1036树的统计Count
- JAVA 获取网络时间
- 抓包工具Fidder详解(主要来抓取Android中app的请求)
- FreeWrap工具,将tcl/tk脚本转变为可执行文件
- Zoho Recruit:用在线招聘系统吸引合适人才
- 小图片组装成大图片
- nodejs使用multiparty模块实现文件上传(另附express.bodyParser()的说明)
- rm 命令简要