题目描述:
小美在手机上种果树,只要成熟了就可以领到免费的水果了。
小美每天可以给果树浇水,果树的成长值加 x。同时也可以给果树施肥,两次施肥至少需要间隔 2 天,果树的成长值加 y。果树成长值达到 z 就成熟了。
小红想知道,最少需要多少天可以领到免费的水果。 (小美种果树关小红什么事???)
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 256M,其他语言512M
输入描述:
一行三个整数 x, y, z, 分别表示浇水的成长值,施肥的成长值,果树成熟的成长值。
输出描述:
一行一个整数,表示最少需要多少天可以领到免费的水果。
示例1:
输入例子:
1 2 10
输出例子:
6
例子说明:
第一天施肥浇水,成长值为 3。
第二天浇水,成长值为 3 + 1 = 4。
第三天浇水,成长值为 4 + 1 = 5。
第四天施肥浇水,成长值为 5 + 3 = 8。
第五天浇水,成长值为 8 + 1 = 9。
第六天浇水,成长值为 9 + 1 = 10。
果树成熟了,可以领到免费水果了!
解题思路:
暴力破解~~~, 定义一个sum表示成长值,根据给出的例子可以看出,第一天浇水和施肥,然后往后两天是浇水,然后后一天再施肥和浇水。循环往复,一直到sum >= z,这种方法是使果树成长最快的。
C++实现代码:
#include <iostream>
using namespace std;
int main() {
int x, y, z;
cin >> x >> y >> z;
int sum = x + y;
int day = 1;
while (sum < z)
{
for (int i = 0; i < 2; i++)
{
if (sum >= z)
{
break;
}
else
{
sum = sum + x;
day++;
}
}
if (sum >= z)
{
break;
}
else
{
sum = sum + x + y;
day++;
}
}
cout<<day;
}
// 64 位输出请用 printf("%lld")
其他好的方法请在评论区留言~~~