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 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见 ...
随机推荐
- 数组中超过N分之一的数字
寻找数组中超过一半的元素,这是一道十分经典和普遍的面试题了,实现起来比较容易,只是需要写技巧,将问题扩展就可以衍生到求数组中几个超过N分一的元素,例如找出数组中3个出现次数超过1/4的元素. /*** ...
- Android-Retrofit-2.0-Post与Get-请求有道词典翻译
Retrofit-2.0版本后,内置已经集成了OKHttp,在使用Retrofit的时候 看似是Retrofit去网络请求的 实际上Retrofit只是封装,所以不要以为Retrofit是网络请求框架 ...
- ZOJ 1259 Rails
stack的应用 #include<iostream> #include<cstdio> #include<stack> using namespace std; ...
- 10 个免费的Bootstrap Admin 主题,模板收集
In designing websites today, one of the must have frameworks is the twitter bootstrap. To those who ...
- Windows核心编程:第14章 探索虚拟内存
Github https://github.com/gongluck/Windows-Core-Program.git //第14章 探索虚拟内存.cpp: 定义应用程序的入口点. // #inclu ...
- WPF 触摸屏小键盘样式
WPF程序,用于平板时,一些输入数量的地方我们需要弹出小键盘输入,这个键盘可以调系统的,也可以自己写. 分享个我现在用的一个数字键盘界面. <Window xmlns:dxe="htt ...
- [译] 玩转ptrace (一)
[本文翻译自这里: http://www.linuxjournal.com/article/6100?page=0,0,作者:Pradeep Padaia] 你是否曾经想过怎样才能拦截系统调用?你是否 ...
- Android------------------RecyclerView学习
一.多种布局的保存 1.Type->getItemViewType(int position) 2.RecylerView.Holder : 定一个holder的内部类,里面保存一些 ...
- 01_python_初始python
一.初始python python是一门解释型语言,弱类型语言 / python解释器最为常用的是cpython(官方) 弱类型语言: a = 1 a = 'alex' #说明变量a既可以是整 ...
- java变量初始化顺序
第一次实例化一个类时,初始化优先顺序为: 1.父类中的静态成员变量和静态代码块初始化 2.本类中的静态成员变量和静态代码块初始化 3.父类中的实例成员初始化 4.父类中的构造方法 5.本类中的实例成员 ...