| ||||||||||
| 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 | |||||||||
网上高人们,我这个程序是自己编的,为了减少运算量很复杂,好多人从头看了都不知道哪里错了,请赐教#include<stdio.h>
#include<math.h>
void main()
{
long x,y,m,n,l,t,u;
long trsg,i,mcd;
scanf("%d %d %d %d %d",&x,&y,&m,&n,&l);
if(m<n){trsg=m;m=n;n=trsg;trsg=x;x=y;y=trsg;}
if(m!=n)
{int difmn=m-n,dif=abs(difmn-l);
float quti=(float)(l/difmn);
for(i=difmn;i>=1;i--)
{if (difmn%i==0) if(l%i==0) {mcd=i;break;}
}
if((x-y)%mcd!=0||l>2000000000||m>2000000000||n>2000000000||x==y) printf("Impossible\n");
else
{
if (quti>=10)
for(u=1;u<=2000000000;u++)
{if((u*l+y-x)%(difmn)==0){t=(u*l+y-x)/(difmn);break;}}
else if (quti<=0.10)
for(t=1;t<=2000000000;t++)
{if((t*(difmn)+x-y)%l==0) break;}
else if (quti<1.0&&quti>0.10)
for(int ut=1;ut<=2000000000;ut++)
{if((l*ut+y-x)%(difmn-l)==0){t=(l*ut+y-x)/(difmn-l);break;}}
else if (quti>1.0&&quti<10)
for(int tu=1;tu<=2000000000;tu++)
{if((l*tu+x-y)%(l-difmn)==0){t=(l*tu+x-y)/(l-difmn);break;}}
else if (l==difmn) printf("Impossible\n");
printf("%d\n",t);
}
}else printf("Impossible\n");
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator