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 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见 ...
随机推荐
- VS2008 安装WINCE插件报错 ToolsMsmCA(Error)解决方案___VS2008
在win7系统,VS2008环境下安装EFMS9280_SDK.msi文件出现报错 ToolsMsmCA(Error):IHxFilters filter registration failure: ...
- J - Oil Skimming 二分图的最大匹配
Description Thanks to a certain "green" resources company, there is a new profitable indus ...
- FastReport调整字体
- java 注释annotation学习---两篇不错的blog
深入理解Java:注解(Annotation)自定义注解入门 ---- http://www.cnblogs.com/peida/archive/2013/04/24/3036689.html 深入理 ...
- Ubuntu系统常见问题解决
我本人使用Ubuntu16.04LTS已经有一段时间了.实话来说,ubuntu虽然确实是开源世界的一款优秀的桌面操作系统,但是易用性和稳定性相比Windows还是差太多.本人从安装系统到逐步配置生产环 ...
- java变量初始化顺序
第一次实例化一个类时,初始化优先顺序为: 1.父类中的静态成员变量和静态代码块初始化 2.本类中的静态成员变量和静态代码块初始化 3.父类中的实例成员初始化 4.父类中的构造方法 5.本类中的实例成员 ...
- 深入字节码理解invokeSuper无限循环的原因
来一段简单的cglib代码 public class SampleClass { public void test(){ System.out.println("hello world&qu ...
- git关联githup和码云
1.与已有的本地仓库关联git remote add origin git@github.com:michaelliao/learngit.git然后就可以协作开发push与pull 2.第二种方法直 ...
- mybatis四大接口之 Executor
[参考文章]:Mybatis-Executor解析 1. Executor的继承结构 2. Executor(顶层接口) 定义了执行器的一些基本操作: public interface Executo ...
- 05-创建kubectl-kubeconfig文件
本文档介绍创建 kubeconfig 文件 下载 kubectl $ wget https://dl.k8s.io/v1.6.0/kubernetes-client-linux-amd64.tar.g ...