poj 1061 青蛙的约会

来源:互联网 发布:c语言中rand 编辑:程序博客网 时间:2024/06/10 05:15

题目大意:

       中文题,相信大家都能看懂,就不说了。

       主要使用到了拓展的欧几里得定理。

#include<stdio.h>long long x,y;long long gcd(long long a,long long b)//求出来的x,y是ax+by=gcd(a,b);的解{    long long d,t;    if(b==0)    {        x=1;        y=0;        return a;    }    d=gcd(b,a%b);    t=x;    x=y;    y=t-a/b*y;    return d;}int main(){    long long a,b,a1,b1,L,k,m,n,p;    while(~scanf("%I64d%I64d%I64d%I64d%I64d",&a,&b,&a1,&b1,&L))    {        if(a1==b1)            printf("Impossible\n");        else        {            //a+a1*x+L*y=b+b1*x ----> L*y+(a1-b1)*x=b-a;           // m=a1-b1,n=b-a,--->mx+py=n;解这个不定方程的解,求最小的x            m=a1-b1;//速度差            n=b-a;//开始的距离差            p=L;            k=gcd(m,p);//k是m,p的最大公约数            if(n%k!=0)//如果n不能被k整除,则没有整数解            {                printf("Impossible\n");                continue;            }            n/=k;            x*=n;            x=(x%L+L)%L;            printf("%I64d\n",x);        }    }    return 0;}

0 0
原创粉丝点击