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