poj 1061 青蛙的约会(二元一次不定方程)
Input
Output
Sample Input
- 1 2 3 4 5
Sample Output
- 4
- 分析:
gcd搞多了二元一次不定方程跟模线性方程求解搞混了。
二元一次不定方程一般式:ax+by=c;
a/gcd(a,b)x+b/gcd(a,b)y=c/gcd(a,b)
当gcd(a,b)|c时才有整数解
两只青蛙再次相遇设跳的次数为t,相差的圈数为p,mt+x-(nt-y)=pl;
化简后得到二元一次不定方程:pl+(n-m)t=x-y;
通过欧几里德扩展定理解出一个解:x0=x0*(x-y)/d;
通解为:x=x0+b/gcd(a,b)t (t为整数)
- #include<iostream>
- #include<cstdio>
- using namespace std;
- __int64 Extended_Euclid(__int64 a,__int64 b,__int64 &x,__int64 &y)
- {
- __int64 d,t;
- if(b==)
- {
- x=;y=;return a;
- }
- d=Extended_Euclid(b,a%b,x,y);
- t=x;
- x=y;
- y=t-a/b*y;
- return d;
- }
- int main()
- {
- __int64 m,n,x,y,l,d,x0,y0,r;
- while(scanf("%I64d %I64d %I64d %I64d %I64d",&x,&y,&m,&n,&l)!=EOF)
- {
- if(x==y) {cout<<<<endl; continue;}
x=x-y;- y=n-m;
- d=Extended_Euclid(y,l,x0,y0);
- r=l/d;
- if(x%d==)
- {
- x0=(x/d*x0%r+r)%r;
- printf("%I64d\n",x0);
- }
- else
- {
- printf("Impossible\n");
- }
- }
- return ;
- }
poj 1061 青蛙的约会(二元一次不定方程)的更多相关文章
- ACM: POJ 1061 青蛙的约会 -数论专题-扩展欧几里德
POJ 1061 青蛙的约会 Time Limit:1000MS Memory Limit:10000KB 64bit IO Format:%lld & %llu Descr ...
- poj 1061 青蛙的约会 拓展欧几里得模板
// poj 1061 青蛙的约会 拓展欧几里得模板 // 注意进行exgcd时,保证a,b是正数,最后的答案如果是负数,要加上一个膜 #include <cstdio> #include ...
- POJ.1061 青蛙的约会 (拓展欧几里得)
POJ.1061 青蛙的约会 (拓展欧几里得) 题意分析 我们设两只小青蛙每只都跳了X次,由于他们相遇,可以得出他们同余,则有: 代码总览 #include <iostream> #inc ...
- poj 1061 青蛙的约会 (扩展欧几里得模板)
青蛙的约会 Time Limit:1000MS Memory Limit:10000KB 64bit IO Format:%I64d & %I64u Submit Status ...
- POJ 1061青蛙的约会(拓展欧几里德算法)
题目链接: 传送门 青蛙的约会 Time Limit: 1000MS Memory Limit: 65536K Description 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见 ...
- POJ 1061 青蛙的约会
青蛙的约会 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 82859 A ...
- poj 1061青蛙的约会
青蛙的约会 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 90083 Accepted: 16257 Descripti ...
- POJ 1061 青蛙的约会(拓展欧几里得求同余方程,解ax+by=c)
青蛙的约会 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 122871 Accepted: 26147 Descript ...
- poj 1061 青蛙的约会+拓展欧几里得+题解
青蛙的约会+拓展欧几里得+题解 纵有疾风起 题意 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止.可是它们出 ...
随机推荐
- Ambiguous mapping. Cannot map 'registerController' method
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'requestMappi ...
- 用NSCoding协议完成“编码/解码”操作-Object-C
Archiving Objective-C Objects with NSCoding For the seasoned Cocoa developer, this is a piece of cak ...
- linux yum 安装mysql
1.安装查看有没有安装过: yum list installed MySQL* rpm -qa | grep mysql* 查看有没有安装包: yum list mysql* 安装mysql客户端: ...
- react native在xcode真机调试ios
1修改URL地址:打开项目目录下的AppDelegate.m文件,修改里面的URL,把localhost改为你的电脑的IP.在Mac系统下,你可以在系统设置/网络里找到电脑的IP地址. 2选择设备:把 ...
- CentOS7服务器上部署Oracle客户端
环境 操作系统: CentOS7.2.1511 x86_64 准备安装包 在这个网站:https://www.oracle.com/technetwork/topics/linuxx86-64soft ...
- 组合的输出(DFS)
题目描述: 排列与组合是常用的数学方法,其中组合就是从n个元素中抽出r个元素(不分顺序且r<=n),我们可以简单地将n个元素理解为自然数1,2,…,n,从中任取r个数. 现要求你用递归的方法输出 ...
- PAT 乙级 1005
题目 题目地址:PAT 乙级 1005 题解 本题主要就在于将一个数的一系列计算结果不重复地存储起来并便于检索,考虑到STL中的集合有相似的特性,使用set可以有效地简化代码和运算. 过程如下: (初 ...
- mysql:having 用法
顺序:where -> group by -> min -> order by -> limit 在select语句中使用having 子句来指定一组行或聚合的过滤条件 hav ...
- 快速入门Matplotlib
十分钟快速入门Matplotlib 函数式绘图 这个库主要有两种绘图方式,一种是像这样的类matlab的函数式绘图方法. import matplotlib.pyplot as plt import ...
- python中split()函数讲解
本文讲述的是string.split(s[, sep[, maxsplit]]),针对string类型的split()函数.它主要是切割字符串,结果返回由字符串元素组成的一个列表,具体怎么使用看下面的 ...