2770: 练39.2 蜗牛爬树
内存限制:64 MB
时间限制:1.000 S
评测方式:文本比较
命题人:
提交:34
解决:17
题目描述
有一棵光滑的葡萄树高$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; }