【POJ 1061】青蛙的约会
Description
我们把这两只青蛙分别叫做青蛙A和青蛙B,并且规定纬度线上东经0度处为原点,由东往西为正方向,单位长度1米,这样我们就得到了一条首尾相接的数轴。设青蛙A的出发点坐标是x,青蛙B的出发点坐标是y。青蛙A一次能跳m米,青蛙B一次能跳n米,两只青蛙跳一次所花费的时间相同。纬度线总长L米。现在要你求出它们跳了几次以后才会碰面。
Input
Output
Sample Input
1 2 3 4 5
Sample Output
4
题意:
起点分别为x,y,一次分别往前跳m,n米,前进的路是环形,长度为L,求跳几次后重合,或不可能重合。
分析:
重合时跳了t次,可得(x+mt)%L=(y+nt)%L
因此x-y+(m-n)t=kL (其中k为一个整数)即
Lk+(n-m)t=x-y
形式上和 ax+ by=c 相同
这个式子里L、n-m、x-y分别为系数a、b、c,未知量k和t为方程的x和y,因此只要求解不定方程ax+by=c的y的最小正整数解即可。
接下来要用到扩展欧几里德算法解同余线性方程。
求出ax+by=c的一个解后,y可能小于0,而通解是x=x0+b/gcd(a,b),y=y0+a/gcd(a,b);
d=gcd(a,b);最小正整数的y=(y0%(a/d)+a/d)%(a/d)
这个的理解可以举个例子:y0=-12,a/d=8,y1=y+8=-4,y2=y0+2*8=4,y2为y的最小正整数解,y2=(y0%8+8)%8=4%8=4。
代码:
//直接模拟TLE,要用扩展欧几里德求解同余线性方程,ヽ(≧Д≦)ノ
#include<stdio.h>
#define ll long long
ll x,y,m,n,l,t,p,q;
ll exgcd(ll a,ll b,ll &x,ll &y)
{
if(b==){x=;y=;return a;}
ll r=exgcd(b,a%b,x,y);
ll tmp=x;x=y;y=tmp-a/b*y;
return r;
}
void modular_linear_equation(ll a,ll b,ll c)
{
ll x,y,d=exgcd(a,b,x,y);
if(c%d)printf("Impossible\n");
else printf("%lld",((y*c/d)%(a/d)+a/d)%(a/d));
}
int main()
{
scanf("%lld%lld%lld%lld%lld",&x,&y,&m,&n,&l);
modular_linear_equation(l,n-m,x-y);
return ;
}
【POJ 1061】青蛙的约会的更多相关文章
- poj 1061 青蛙的约会 拓展欧几里得模板
// poj 1061 青蛙的约会 拓展欧几里得模板 // 注意进行exgcd时,保证a,b是正数,最后的答案如果是负数,要加上一个膜 #include <cstdio> #include ...
- ACM: POJ 1061 青蛙的约会 -数论专题-扩展欧几里德
POJ 1061 青蛙的约会 Time Limit:1000MS Memory Limit:10000KB 64bit IO Format:%lld & %llu Descr ...
- 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 青蛙的约会 扩展欧几里德--解不定方程
青蛙的约会 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 81606 Accepted: 14116 Descripti ...
- POJ 1061 青蛙的约会(拓展欧几里得求同余方程,解ax+by=c)
青蛙的约会 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 122871 Accepted: 26147 Descript ...
- poj 1061 青蛙的约会 扩展欧几里德
青蛙的约会 Time Limit: 1000MS Memory Limit: 10000K Description 两 只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们 ...
随机推荐
- 页面分享代码share
在开发一个页面的时候常常会有这么一个小功能,就是分享该页面中的信息. 常见的分享代码有百度分享,JiaThis分享插件,bshare分享插件等,我主要分享一下自定义分享代码,如下: function ...
- JavaWeb学习之Servlet(一)----MyEclipse及Tomcat的配置
[声明] 欢迎转载,但请保留文章原始出处→_→ 文章来源:http://www.cnblogs.com/smyhvae/p/4134921.html [开发环境] 物理机版本:Win 7旗舰版(64位 ...
- java 11-7String类里的方法的一些案例
1. 把int数组拼接成字符串的案例 需求:把数组中的数据按照指定个格式拼接成一个字符串 举例: int[] arr = {1,2,3}; 分析: A:首先定义一个空的字符串 B:其次先给这个字符串拼 ...
- js中接口的声明与实现
实现接口,必须实现接口里的所有方法. function Interface(name,fns){//声明一个接口类 this.name = name; th ...
- ueditor集成自己的ImageServer时出现错误的原因分析
1.场景:应用是一个独立的站点,ImageServer是一个独立的站点,因此存在跨域的问题. 2.遇到的详细错误“网络链接错误,请检查配置后重试!” 我使用uploadify测试是没问题的.使用ued ...
- C语言 预处理二(宏定义--#define)
//#define 宏定义(宏定义一般大写) //知识点一-->#define的作用域:从#define开始,从上往下,如果遇到#undef就到#undef处结束,如果没有就是作用于当前整个文件 ...
- 流媒体技术之RTSP
流媒体技术之RTSP 标签: RTSP技术移动流媒体 2016-06-19 18:48 38人阅读 评论(0) 收藏 举报 分类: 流媒体相关技术 版权声明:本文为博主原创文章,未经博主允许不得转载 ...
- Android -- Properties使用
import java.io.FileInputStream; import java.io.FileOutputStream; import java.util.Properties; public ...
- django字段设置null和blank的区别
null 这个选项跟数据库有关. null=True的话,数据库中该字段是NULL,即允许空值:null=False(默认)的话,数据库中该字段是NOT NULL,即不允许空值. blank 这个选项 ...
- LeetCode:Palindrome Partitioning,Palindrome Partitioning II
LeetCode:Palindrome Partitioning 题目如下:(把一个字符串划分成几个回文子串,枚举所有可能的划分) Given a string s, partition s such ...