| ||||||||||
| 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 | |||||||||
走过,路过,千万不要错过。偶是菜鸟,菜刀的菜。请大虾帮我看看我错在那了?偶第一次编程!!In Reply To:走过,路过,千万不要错过。偶是菜鸟,菜刀的菜。请大虾帮我看看我错在那了?偶第一次编程!! Posted by:qqliuyong at 2005-07-30 10:41:27 >
/* 该程序以青蛙相对运对为基础,进行计算的. 把慢的看作不动,快的相对运对,追慢的。第一次,他们有一个最小的距离,若为0,表示相遇了。不为0,则继续运动,在超过一圈后,又有一个新的最短距离,若为0,相遇,不为0,继续。直到他们的最小距离与第一次相同时,还没有相遇,则永远不能相遇了。
关于跳的次数的计算,我是用多跑的圈数(i)与全长(l)相乘后,加上原本的差距(s),然后再除以速度差(j)即可。
基本参量说明:m,n,x,y,l就不用说了。
s—刚开始的路程差,认为快的在后边
o—最终输出结果用的变量
a-俩只青蛙的最短距离,以快的再后边计算
b—快的青蛙多跑一圈还差的距离
j—实质就是速度差
p—循环运算用的参量,
由于本人水平有限,且第一次编程,有很多步明白,请高手多多指教。
发现不对的地方,可以发送到本人邮箱:scpczc@163.com或者加Qq:215695799
*/
#include <math.h>
> #include <stdio.h>
>
> main()
> { long m,n,x,y,l,j,s,o,a,b,p;
> int i;
scanf("%ld%ld%ld%ld%ld",&x,&y,&m,&n,&l);
>
>
> if(m>n) //一直到下边else结束,这部分 求出 s,
> {if(x>y) s=l+y-x;
> else s=y-x; }
>
> else
> { if(m==n)
> {printf("Impossible\n");return 0;}
> else
> {if(x>y)s=x-y;else s=l-y+x;}
> }
>
> j=fabs(m-n); // 主要求出速度差
> a=s%j; //a—表示俩只青蛙的最短路程,以速度快的再后边计算
> b=l%j; //语言有限,不能清楚表达,
>
>
> if(a==0){printf("%ld",(s/j));return 0;} //以下计算多跑多少
else // 圈的时候,相遇
> {p=a+b;
> for(i=1;;i++)
> {
> if(p%j==a){printf("imporssible");return 0;}
> else
> { if(p%j==0)break;
> else p=b+p;
> }
> }
> }
> o=(i*l+p)/j;
> printf("%ld\n",o);
> return 0;
> }
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator