2770: 练39.2 蜗牛爬树
内存限制:64 MB
时间限制:1.000 S
评测方式:文本比较
命题人:
提交:39
解决:21
题目描述
有一棵光滑的葡萄树高$17$分米,一只蜗牛从底部向上爬,每分钟爬$3$分米,但每爬一分钟后都要休息一分钟,休息期间又要滑下$1$分米。该蜗牛需要多少分钟才能爬到树顶?
输入
无。
输出
输出一个整数,表示蜗牛需要多少分钟才能爬到树顶。
样例输入 复制
无
样例输出 复制
需要15分钟
提示
方法1:模拟法
#include<iostream>
using namespace std;
int main( )
{
int i,t; //i表示蜗牛爬的高度,t表示分钟数。
t=i=0;
while(1) //若在循环体中没有执break语句终止循环,则会形成死循环。
{
t++;
i+=3;
if(i>=17) break; //若爬到树顶,则终止循环。
t++;
i--;
}
cout<<"需要"<<t<<"分钟"<<endl;
}
方法2:
思路:蜗牛爬上树顶后就不会往下滑了,因此需要先将总高度减去最后一次白天爬到树顶的高度,再除以蜗牛每周期(两分钟)实际爬的高度,此时得到的分钟数(如果有余数,还需要加1)是蜗牛没有爬到树顶的分钟数,再加上爬上树顶那分钟,也就是蜗牛爬到树顶的总分钟数。
#include<bits/stdc++.h>
using namespace std;
int main()
{
int h=17,up=3,down=1,t;
/***
先把最后一段减去:h-=up;
最后需要的时间加上1:t+=1;
***/
h-=up;
t=2*h/(up-down)+(h%(up-down)>0);
t+=1;
cout<<"需要"<<t<<"分钟"<<endl;
return 0;
}