pku 1061 青蛙约会
2014-07-18 10:53
246 查看
这道题考的就是扩展欧几里得原理,首先根据题意可以建模
设跑了t步 最后相遇,由题意可以得到等式。
(n-m)t+kl=x-y
不要怕,也不需要管两只青蛙谁在前,谁在后,直接列式。
然后扩展gcd,可以解出 t ..
#include <iostream>
typedef long long ll;
using namespace std;
void exgcd(ll a,ll b,ll &d,ll &x,ll &y)
{
if(!b)
{
x=1;
y=0;
d=a;
return;
}
exgcd(b,a%b,d,x,y);
ll temp=x;
x=y;
y=temp-(a/b)*y;
}
int main()
{
ll x,y,m,n,l;
ll d,x0,y0;
while(cin>>x>>y>>m>>n>>l)
{
ll a=n-m;
ll b=l;
ll c=x-y;
exgcd(a,b,d,x0,y0);
if(c%d)
{
printf("Impossible\n");
continue;
}
x0=x0*(c/d)%b;
x0=(x0+b)%b;
printf("%lld\n",x0);
}
return 0;
}
设跑了t步 最后相遇,由题意可以得到等式。
(n-m)t+kl=x-y
不要怕,也不需要管两只青蛙谁在前,谁在后,直接列式。
然后扩展gcd,可以解出 t ..
#include <iostream>
typedef long long ll;
using namespace std;
void exgcd(ll a,ll b,ll &d,ll &x,ll &y)
{
if(!b)
{
x=1;
y=0;
d=a;
return;
}
exgcd(b,a%b,d,x,y);
ll temp=x;
x=y;
y=temp-(a/b)*y;
}
int main()
{
ll x,y,m,n,l;
ll d,x0,y0;
while(cin>>x>>y>>m>>n>>l)
{
ll a=n-m;
ll b=l;
ll c=x-y;
exgcd(a,b,d,x0,y0);
if(c%d)
{
printf("Impossible\n");
continue;
}
x0=x0*(c/d)%b;
x0=(x0+b)%b;
printf("%lld\n",x0);
}
return 0;
}
相关文章推荐
- [拓展欧几里得算法]Pku1061-青蛙的约会
- PKU 1061 青蛙的约会(经典拓展欧几里德)
- pku 1061青蛙的约会
- pku 1061 青蛙的约会 同余方程
- pku1061青蛙的约会
- pku1061 青蛙的约会
- pku 1061 - 青蛙的约会
- 青蛙的约会pku1061
- PKU1061 解题报告 青蛙的约会 __用扩展欧几里得解模同余方程
- pku 1061 青蛙约会
- PKU-1061-青蛙的约会
- PKU 1061 青蛙的约会
- pku 1061 青蛙的约会(解模线性方程)
- pku1061青蛙的约会 解题报告
- PKU-1061 青蛙的约会 (扩展的欧几里德算法)
- poj-1061-扩展欧几里得算法-青蛙的约会
- POJ 1061 青蛙约会(一次同余方程)
- POJ 1061 青蛙的约会( 扩展欧几里得)
- POJ1061——青蛙的约会(扩展欧几里德)
- POJ 1061 青蛙的约会