| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
1000组数据全部通过但是wa!!!!看代码#include<stdio.h>
long x,y,m,n,l;//x y:坐标 m,n:跳跃距离 l:地球周长
long cut(long a,long b) //跳跃距离之差
{
if(a>b)
return a-b;
else
return b-a;
}
long check(long num,long l,long distance)//检查能否跳到同一个点(相对位移能否变为0,不能就返回0,能就返回跳多少步)
{
long flag=0;
long n;
for(long i=0;i<=num;i++)//如果相对位移出现了一样就一定跳不到同一个点(每个可能的相对位移都出现就一定能出现相同的相对位移)
{
if((l*i+distance)%num==0)
{
flag=1;
n=i;
break;
}
}
if(flag==0)
return 0;
else
{
return (l*n+distance)/num;
}
}
int main()
{
long distance;
// if(freopen("D:读入数据.txt", "r", stdin)==NULL)
// printf("000!");
// if(freopen("D:输出数据.txt","w",stdout)==NULL)
// printf("111!");
// while(1)
// {
if(scanf("%ld%ld%ld%ld%ld",&x,&y,&m,&n,&l)==EOF)
return 1;
if(m>n)
{
if(x>y)
distance=l-(x-y);
else if(x==y)
distance=0;
else
distance=y-x;
}
else
{
if(x>y)
distance=x-y;
else if(x==y)
distance=0;
else
distance=l-(y-x);
}
long num=cut(m,n);
if(num!=0)
{
long flag=check(num,l,distance);
if(flag==0)
{
printf("Impossible\n");
}
else
printf("%ld\n",flag);
}
if(num==0)
{
if(distance!=0)
printf("Impossible\n");
else
printf("1\n");
}
// }
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator