http://acm.hust.edu.cn/vjudge/contest/125004#problem/C

 

分析:

不可能的情况:(1)两只青蛙起始位置不同,但跳的步数一样;(2)当两只青蛙起始位置不同,跳的步数不一样,那么当他们重新再各自跳回自己起始位置之前,他们没有见面的话,那么他们肯定不会再见面(也就是构成了一个循环了)

 

可能的情况:(1)两只青蛙一开始起始位置就相同;(2)当两只青蛙起始位置不同,跳的步数不一样,那么当他们重新再各自跳回自己起始位置之前,他们见到面了。

 

 

#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
#include<math.h>
#define maxn 21000
#define oo 0xfffffff
using namespace std;
typedef long long LL;

int main()
{
    LL x, y, m, n, l;

    while(scanf("%lld %lld %lld %lld %lld", &x, &y, &m, &n, &l)!=EOF)
    {
        if(x!=y && m==n) printf("Impossible\n");
        else if(x==y)  printf("0\n");
        else
        {
            LL a, b;
            int cnt=1;

            a = b = 0;

            while(1)
            {
                a = x + m*cnt;
                b = y + n*cnt;

                if(a%l == b%l)
                {
                    printf("%d\n", cnt);
                    break;
                }

                else if(a%l==x && b%l==y)
                {
                    printf("Impossible\n");
                    break;
                }
                cnt ++;
            }
        }
    }
    return 0;
}
View Code

 

posted on 2016-08-01 11:26  不忧尘世不忧心  阅读(372)  评论(0编辑  收藏  举报