2016年第七届蓝桥杯Java程序设计本科B组决赛 愤怒的小鸟(结果填空)

2016年第七届蓝桥杯Java程序设计本科B组决赛个人题解汇总:

https://blog.csdn.net/daixinliangwyx/article/details/90169154

 

第一题

标题:愤怒小鸟

X星球愤怒的小鸟喜欢撞火车!

一根平直的铁轨上两火车间相距 1000 米
两火车 (不妨称A和B) 以时速 10米/秒 相对行驶。

愤怒的小鸟从A车出发,时速50米/秒,撞向B车,
然后返回去撞A车,再返回去撞B车,如此往复....
两火车在相距1米处停车。

问:这期间愤怒的小鸟撞 B 车多少次?

注意:需要提交的是一个整数(表示撞B车的次数),不要填写任何其它内容。


解法:想想小鸟、A车和B车的运动过程来模拟。

首先,小鸟从A车这边出发到B车,假设用时为t1,A车已行驶路程为sa,B车已行驶路程为sb,则当小鸟撞到B车时应该满足:sa+50*t1=1000-sb-10*t2;

然后由于要再计算小鸟从B车这边出发撞到A车的用时,所以需要更新一下A车和B车已行驶路程:sa+=10*t1,sb=10*t1;

再算小年从B车这边出发撞到A车的用时t2:sa+10*t2=1000-sb-50*t2;

再更新一下sa、sb,再算一遍t1......

这样一直重复模拟小鸟撞来撞去的过程,至于计数,就在小鸟每次撞到B车时,判断一下两车的距离再计数。

代码:

#include<bits/stdc++.h>
using namespace std;
int main() {
  int ans = 0;
  double sa = 0, sb = 0, t1, t2;
  while(1) {
    t1 = (1000-sa-sb)*1.0/60;//小鸟从A向B飞的用时 
    sa += 10 * t1;
    sb += 10 * t1;
    if(1000-sa-sb < 1) break;//小鸟撞到B车时,两车距离小于1则不符合条件直接break
    ans++;
    t2 = (1000-sa-sb)*1.0/60;//小鸟撞到B车后从B向A飞的用时 
    sa += 10 * t2;
    sb += 10 * t2;
  }
  cout << ans << endl; 
  return 0;
}

答案:9

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值