赞
踩
这题看起来很简单,但是考验的也是逻辑思维能力。
这里有以下需要考虑的:
详细C代码如下:
#include<stdio.h> int main() { int v1, v2, t, s, l; scanf("%d %d %d %d %d", &v1, &v2, &t, &s, &l); int s1 = 0, s2 = 0, t1 = 0, t2 = 0; int td = 1; int tmp = 0; int flag = 0; //休息的标识 int re = 0; int c = 0; int ac = 0; //兔子逗留标识 while(1) { if(v1 * td >= l && flag == 0 && re == 0) //还没到t米就兔子就到达了终点 { printf("R\n%d", td); break; } if(flag == 0 && re == 0 && c == 0) //兔子停下之前的路程公式 s1 = v1 * td; else if(re != 0 && flag == 0) { s1 += v1 * re; } s2 = v2 * td; if(s1 >= l && s2 < l) //兔子超过乌龟到达终点 { printf("R\n%d", td); break; } if(flag == 1 && tmp + s == td) { flag = 0; //失活 re = 1; } if(s2 >= l && s1 < l) //乌龟超过兔子到达终点 { printf("T\n%d", td); break; } if(s2 == l && s1 == l) //二者同时到达终点 { printf("D\n%d", td); break; } if(s1 - s2 >= t && flag == 0) //兔子领先乌龟t米 { flag = 1; tmp = td; //标尺 c = 1; } td++; } return 0; }
部分运行结果如下:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。