| 查看: 1441 | 回复: 2 | ||
[求助]
C语言高手请进,龟兔赛跑的问题!
|
|
龟兔赛跑预测 问题描述 话说这个世界上有各种各样的兔子和乌龟,但是研究发现,所有的兔子和乌龟都有一个共同的特点——喜欢赛跑。于是世界上各个角落都不断在发生着乌龟和兔子的比赛,小华对此很感兴趣,于是决定研究不同兔子和乌龟的赛跑。他发现,兔子虽然跑比乌龟快,但它们有众所周知的毛病——骄傲且懒惰,于是在与乌龟的比赛中,一旦任一秒结束后兔子发现自己领先t米或以上,它们就会停下来休息s秒。对于不同的兔子,t,s的数值是不同的,但是所有的乌龟却是一致——它们不到终点决不停止。 然而有些比赛相当漫长,全程观看会耗费大量时间,而小华发现只要在每场比赛开始后记录下兔子和乌龟的数据——兔子的速度v1(表示每秒兔子能跑v1米),乌龟的速度v2, 以及兔子对应的t,s值,以及赛道的长度l——就能预测出比赛的结果。但是小华很懒,不想通过手工计算推测出比赛的结果,于是他找到了你——清华大学计算机系的高才生——请求帮助,请你写一个程序,对于输入的一场比赛的数据v1,v2,t,s,l,预测该场比赛的结果。 输入格式 输入只有一行,包含用空格隔开的五个正整数v1,v2,t,s,l,其中(v1,v2<=100;t<=300;s<=10;l<=10000且为v1,v2的公倍数) 输出格式 输出包含两行,第一行输出比赛结果——一个大写字母“T”或“R”或“D”,分别表示乌龟获胜,兔子获胜,或者两者同时到达终点。 第二行输出一个正整数,表示获胜者(或者双方同时)到达终点所耗费的时间(秒数)。 样例输入 Sample 1 10 5 5 2 20 Sample2 10 5 5 1 20 Sample3 10 5 5 3 20 样例输出 Sample1 D 4 Sample2 R 3 Sample3 T 4 |
» 猜你喜欢
导师想让我从独立一作变成了共一第一
已经有9人回复
博士读完未来一定会好吗
已经有23人回复
到新单位后,换了新的研究方向,没有团队,持续积累2区以上论文,能申请到面上吗
已经有11人回复
读博
已经有4人回复
JMPT 期刊投稿流程
已经有4人回复
心脉受损
已经有5人回复
Springer期刊投稿求助
已经有4人回复
小论文投稿
已经有3人回复
申请2026年博士
已经有6人回复
» 本主题相关价值贴推荐,对您同样有帮助:
求助蛋白纯化的高手
已经有5人回复
C语言变量问题,求助大侠!!
已经有17人回复
合成高手请进,间氯过氧苯甲酸环氧化的问题
已经有27人回复
一个区间搜索的c语言程序 出问题了
已经有8人回复
能帮我解决问题者金币全部赠送!XPS高手请进!
已经有13人回复
气相色谱测定苯甲酸、山梨酸和糖精钠相关问题 (高手请进,谢谢)
已经有6人回复
PCR高手请进,小女子有事相求,我刚来金币不要嫌少啊,我只有这么多啊,全给你了
已经有20人回复
c语言高手请进,请勿灌水,谢谢!(关于读写文件的问题)
已经有6人回复
关于c语言的一个小问题 坐等回复啊 急啊 是关于建立数组的
已经有9人回复
难缠的有关物质问题!分析高手请进来帮我分析下,谢谢!
已经有13人回复
capital_j
木虫 (小有名气)
- 应助: 7 (幼儿园)
- 金币: 3599.4
- 散金: 141
- 帖子: 116
- 在线: 68.7小时
- 虫号: 1720641
- 注册: 2012-03-27
- 性别: GG
- 专业: 可再生与替代能源利用中的
【答案】应助回帖
★ ★
感谢参与,应助指数 +1
jjdg: 金币+2, 感谢应助 2012-04-02 03:36:29
感谢参与,应助指数 +1
jjdg: 金币+2, 感谢应助 2012-04-02 03:36:29
|
#include using namespace std; void func(int rubspeed,int turspeed,int t,int s,int l,int a[]) { int sleeptime = 0; a[0]=a[1]=a[2]=0; while(1) { if(sleeptime){ sleeptime--; } else { if(a[1]-a[2]>=t) sleeptime = s-1; else a[1]+=rubspeed; } a[2]+=turspeed; a[0]++; if(a[1]>=l || a[2]>=l) return; } } int main() { int a1=10,a2=5,a3=5,a4=2,a5=20; int a[3]={0,0,0};//记录到达终点时a[0]时间 a[1]兔子已跑 a[2]乌龟已跑 while(a1) { cin>>a1>>a2>>a3>>a4>>a5; func(a1,a2,a3,a4,a5,a); if(a[1]>=a5 && a[2]>=a5) cout<<"D"; else{ if(a[2]>=a5) cout<<"T"; if(a[1]>=a5) cout<<"R"; } cout< return 0; } 验证,已通过 懒得改成c语言了,你主要看看思路。(也就是include和输出有点异样) |

2楼2012-04-01 22:28:37
emanlee
木虫 (小有名气)
- 应助: 28 (小学生)
- 金币: 3521.6
- 散金: 100
- 红花: 2
- 帖子: 116
- 在线: 125.6小时
- 虫号: 1466309
- 注册: 2011-10-29
- 性别: GG
- 专业: 计算机应用技术
【答案】应助回帖
★ ★ ★
感谢参与,应助指数 +1
jjdg: 金币+3, 感谢应助 2012-04-04 00:26:06
jjdg: 编辑内容 2012-04-04 00:26
jjdg: 编辑内容 2012-04-04 00:26
jjdg: 编辑内容 2012-04-04 00:26
感谢参与,应助指数 +1
jjdg: 金币+3, 感谢应助 2012-04-04 00:26:06
jjdg: 编辑内容 2012-04-04 00:26
jjdg: 编辑内容 2012-04-04 00:26
jjdg: 编辑内容 2012-04-04 00:26
|
以下为C语言版本: #include "stdio.h" void func(int rubspeed,int turspeed,int t,int s,int l,int a[]) { int sleeptime = 0; a[0]=a[1]=a[2]=0; while(1) { if(sleeptime){ sleeptime--; } else { if(a[1]-a[2]>=t) sleeptime = s-1; else a[1]+=rubspeed; } a[2]+=turspeed; a[0]++; if(a[1]>=l || a[2]>=l) return; } } int main() { int a1=10,a2=5,a3=5,a4=2,a5=20; int a[3]={0,0,0};/*记录到达终点时a[0]时间 a[1]兔子已跑 a[2]乌龟已跑 */ while(a1) { scanf("%d%d%d%d%d",a1,a2,a3,a4,a5); func(a1,a2,a3,a4,a5,a); if(a[1]>=a5 && a[2]>=a5) printf("D" ); else{ if(a[2]>=a5) printf("T" ); if(a[1]>=a5) printf("R" ); } printf("\n%d\n",a[0]); } return 0; } [ Last edited by jjdg on 2012-4-4 at 00:26 ] |
3楼2012-04-03 08:39:39













回复此楼