【2016年余姚市小学】远足活动 (hike)

题目描述

小明决定徒步完成一个N天的远足登山活动。第一天他带上一个大睡袋和足够的食物,从大本营出发。大本营的海拔高度为0,在第N天,他必须回到大本营。在这N天中,他可以在他的大睡袋和简易的帐篷中入睡。
  在每天的登山活动中,他可以选择向山顶出发,也可以选择下山(同一天只能选择一种方式),而且有如下两条规则:
  1、在登山过程中,他不能走的太快,海拔的升高的过程,空气的含氧量会发生变化,因此每天只能上升A米的海拔。
  2、在下山过程中,他也不能走的太快,否则他的膝盖无法承受冲击。每天他只能下降B米的海拔。
  例如:某天早晨小明处在470米的海拔位置,A=100且B=200,那么他在这天中可以向上到达570米的位置,也可以下山达到海拔270米的位置,因此一天结束后,他可能处在的海拔位置在270~570米之间。
  现在,给定N,A和B,问小明最多能到达海拔多少米的高度。

其实这道题很简单,只是被想复杂了。我的思路就是八个字:能上则上,不然则下。
话不多说,上代码:

#include
#include
using namespace std;
int s=0;
int main()
{
	int n,a,b;
	cin>>n>>a>>b;
	for(int i=1;i<=n;i++)
	{
		if(a*i>=b*(n-i)&&a*i-b*(n-i)<=a)
		{
			s=b*(n-i);//能上则上
		}
		if(a*i<=b*(n-i)&&b*(n-i)-a*i<=b)
		{
			s=a*i;//不然则下
		}
	}
	cout<

好了,就是这样,如果喜欢,记得点赞或评论!

你可能感兴趣的:(oj3)