题目:
小明参加聚会前需要完成一些任务,已知解决第i个任务的时间为5i分钟,去聚会的路程花费一些时间,假设聚会持续4h,若为了参加聚会(哪怕只有一瞬间),小明从聚会开始时解决任务,最多解决多少任务。
思路:
将路程花费的时间减掉,即为解决任务必须小于的时间。遍历所有情况(1个任务~10个任务),求所需时间和,第一次使得解决任务的时间大于剩余时间的任务数减1,即为所求结果。
代码如下:
// Chapter11_4.cpp : Defines the entry point for the application.
// 能解决多少任务
// 小明参加聚会前需要完成一些任务,已知解决第i个任务的时间为5i分钟,
// 去聚会的路程花费一些时间,假设聚会持续4h,若为了参加聚会(哪怕只有一瞬间),
// 小明从聚会开始时解决任务,最多解决多少任务
#include "stdafx.h"
#include<iostream>
using namespace std;
int main()
{
int totalTime = 240; //聚会持续时间
int leftTime; //除去路程花费,剩余的时间
int ans = 10; //解决的任务数
int sum = 0; //解决任务的时间和
int c,d; //待解决的任务数和小明去聚会要花费的时间
cout << "输入待解决的任务数和小明去聚会要花费的时间:";
cin >> c >> d;
leftTime = totalTime - d;
//每加一个任务,计算所需总时长
for(int i=1;i<=10;i++)
{
sum = sum + 5*i;
//若任务加到刚好超过剩余时间
if(sum > leftTime)
{
//则减去一个任务就是满足条件下最多解决的任务
ans = i - 1;
break;
}
}
cout << "小明最多能解决的任务数为:" << ans << endl;
system("pause");
return 0;
}
运行结果如下: