题目描述
题目来源:2016年蓝桥杯国赛
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
X 星球愤怒的小鸟喜欢撞火车!
一根平直的铁轨上两火车间相距 100010001000 米 两火车 (不妨称 A 和 B) 以时速 101010米/秒 相对行驶。
愤怒的小鸟从 A 车出发,时速 505050 米/秒,撞向 B 车, 然后返回去撞 A 车,再返回去撞 B 车,如此往复.... 两火车在相距 111 米处停车。
问:这期间愤怒的小鸟撞 B 车多少次?
运行限制
- 最大运行时间:1s
- 最大运行内存: 128M
思路:1. 分别 i(初始化为0),j(初始化为1000) ,k(初始化为0,表示从A车出发) 用三个坐标表示A车、B车、小鸟的位置;
2. 用d表示A车和B车间的距离,初始化为 j - i 即1000;
3. 用循环来模拟A车、B车的行驶以及小鸟的飞翔,计算每次小鸟撞火车时三者的坐标和d的值从而判断是否停止(当d不大于1时停止);
4. 用一个整数c来模拟小鸟的飞行方向,每次撞车后c++;初始化为0,c为偶数时表示从A车出发,飞向B车;c为奇数时表示从B车出发,飞向A车;
//2016g 愤怒小鸟
#include <iostream> vxgzh:xtsn
using namespace std;
int main()
{
double i,j,k,d,t;
int c=0; //c=0表示一开始小鸟本次从A车出发,朝B车飞去,即下次撞向B车
int c1=0; //c1统计装B车的次数
i=0; //i表示A车的位置,初始为0
j=1000; //j表示B车的位置,初始为1000
d=j-i; //d表示A、B两车间的距离
k=i;
while(d>1)
{
if(c%2==0) //从A车出发
k=i;
else //从b车出发
{
k=j;c1++; //c1统计撞B车的次数
}
t=d/60; //每一次的行驶时间,60=10+50;
i+=t*10; //a车的位置
j-=t*10; //b车的位置
d=j-i; //a、b车的距离
c++; //用于小鸟变换方向
}
cout<<c1<<endl;
return 0;
}