POJ 1061 青蛙的约会(拓展欧几里得算法求解模线性方程组详解)
题目链接:
BZOJ:
https://www.lydsy.com/JudgeOnline/problem.php?id=1477
POJ:
https://cn.vjudge.net/problem/POJ-1061
题目描述:
Description
Input
Output
Sample Input
Sample Output
4
关于如何使用拓展欧几里得算法求解模线性方程组的证明请参考另一篇博客:
/*
题意描述
计算满足(x+km)(mod l)=(y+kn)(mod l) 的k的最小正整数 解题思路
使用拓展欧几里得算法求解模线性方程组
由题知,(x+km)≡(y+kn)(mod l) ,由它的充要条件可得
(x+km)-(y+kn)=tl(其中t属于整数),整理可得
k(m-n)-tl=y-x
另a=m-n,b=-l,c=y-x
可得ak+bl=c,即二元一次方程,利用拓展欧几里得算法求得
a和b的最大公约数d以及满足方程的一组解(k0,t0)
进而判断是否有整数解,有整数解后求出最小正整数解
*/
#include<cstdio>
typedef long long LL; void extgcd(LL a, LL b, LL &d, LL &k0, LL &t0); int main()
{
LL x,y,m,n,l,a,b,c,d,k0,t0,k,t;
while(scanf("%lld%lld%lld%lld%lld",&x,&y,&m,&n,&l) != EOF){
a=m-n;
b=l;
c=y-x;
if(a < ){
a = -a;
c = -c;
}
extgcd(a,b,d,k0,t0);
if(c%d != )
printf("Impossible\n");
else
{
k=k0*c/d;
l=l/d;
if(k >= )
k %= l;
else
k = k%l + l;
printf("%lld\n",k);
}
}
return ;
} void extgcd(LL a, LL b, LL &d, LL &k0, LL &t0)
{
if(b == ){
d=a;k0=;t0=;
}
else{
extgcd(b,a%b,d,t0,k0);
t0 -= k0*(a/b);
}
}
POJ 1061 青蛙的约会(拓展欧几里得算法求解模线性方程组详解)的更多相关文章
- poj 1061 青蛙的约会 拓展欧几里得模板
// poj 1061 青蛙的约会 拓展欧几里得模板 // 注意进行exgcd时,保证a,b是正数,最后的答案如果是负数,要加上一个膜 #include <cstdio> #include ...
- POJ.1061 青蛙的约会 (拓展欧几里得)
POJ.1061 青蛙的约会 (拓展欧几里得) 题意分析 我们设两只小青蛙每只都跳了X次,由于他们相遇,可以得出他们同余,则有: 代码总览 #include <iostream> #inc ...
- poj 1061 青蛙的约会+拓展欧几里得+题解
青蛙的约会+拓展欧几里得+题解 纵有疾风起 题意 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止.可是它们出 ...
- ACM: POJ 1061 青蛙的约会 -数论专题-扩展欧几里德
POJ 1061 青蛙的约会 Time Limit:1000MS Memory Limit:10000KB 64bit IO Format:%lld & %llu Descr ...
- poj 1061青蛙的约会
青蛙的约会 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 90083 Accepted: 16257 Descripti ...
- POJ 1061 青蛙的约会(扩展欧几里得算法)
http://poj.org/problem?id=1061 思路: 搞懂这个扩展欧几里得算法花了不少时间,数论真的是难啊. 含义:找出一对整数,使得ax+by=gcd(a,b). 接下来看这道题目, ...
- 数学--数论--POJ 1061青蛙的约会 (扩展欧几里得算法)
青蛙的约会 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止.可是它们出发之前忘记了一件很重要的事情,既没有问 ...
- POJ 1061 青蛙的约会 (扩展欧几里得算法)
题目链接 Description 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止.可是它们出发之前忘记了一件 ...
- POJ 1061青蛙的约会(拓展欧几里德算法)
题目链接: 传送门 青蛙的约会 Time Limit: 1000MS Memory Limit: 65536K Description 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见 ...
随机推荐
- SRM470
250pt 给定1个最多16颜色的字符串(颜色可以重复),甲在最左边,乙在最右边.轮流操作,每次可以消除一种颜色. 给定一个k,问谁能最先消除完到位置k之间的障碍. 思路: 每个人肯定优先取对方没有的 ...
- ASP.NET Web API 框架研究 Controller创建过程与消息处理管道
现在我们从代码角度来看下,从消息处理管道末尾是怎么创建出Controller实例的.消息处理管道末端是一个叫HttpRoutingDispatcher的处理器,其内部完成路由后 ,会把消息派送给其内部 ...
- php+sqlserver之如何操作sqlserver数据库
https://blog.csdn.net/xia13100004562/article/details/58598872 2016年12月19日 17:15:39 阅读数:6790 前面已经基本配置 ...
- java异步线程
使用一个ExecutorService,增加两个不可取消的子线程任务,并且获取他们的返回值. @org.junit.Test public void testFuture() throws Int ...
- Linux下可视化空间分析工具ncdu
场景:磁盘空间占满后快速查找某个目录(子目录)占用空间大. ncdu /var (分析后按左右键查看即可)
- SAS Shortcut Keys
最常用的键有F3(运行代码).F6(查看log信息).Ctrl + / (注释代码).Ctrl + Shift + / (取消代码注释) SAS系统一共有4类快捷键,其中部分有重复, 第一类可自定义. ...
- 记一次线上事故的JVM内存学习
今天线上的hadoop集群崩溃了,现象是namenode一直在GC,长时间无法正常服务.最后运维大神各种倒腾内存,GC稳定后,服务正常.虽说全程在打酱油,但是也跟着学习不少的东西. 第一个问题:为什么 ...
- Ubuntu14.04 + Text-Detection-with-FRCN(CPU)
操作系统: yt@yt-MS-:~$ cat /etc/issue Ubuntu LTS \n \l Python版本: yt@yt-MS-:~$ python --version Python pi ...
- oracle exp imp日常使用
http://www.cnblogs.com/ningvsban/archive/2012/12/22/2829009.html http://www.cnblogs.com/mq0036/archi ...
- python面试(3)
一.语言 推荐一本看过最好的python书籍? 拉开话题好扯淡 谈谈python的装饰器,迭代器,yield? 标准库线程安全的队列是哪一个?不安全的是哪一个?logging是线程安全的吗? pyth ...