给定三个整数x,y,z,要求将变量now从0开始,每次可以:
操作一每天可以使用一次,操作二使用后要冷却两天,求使noe≥z所需要的天数。
第一天肯定是操作一和操作二一起用,然后操作二就要冷却两天,所以这其实就是一个三天的循环,每三天now=now+3∗x+y。要求now达到z的最小天数,首先就是三天循环先让now逼近z,这时候就剩下了z−⌊z/(3∗x+y)⌋∗(3∗x+y),花费天数为⌊z/(3∗x+y)⌋。而剩下的值就只要看是能够一天内完成(≤x+y),还是两天内完成(≤2∗x+y),还是三天内完成(≤3∗x+y)
AC
#include <iostream>
using namespace std;
int main() {
int x, y, z;
// 输入 x、y、z 的值
cin >> x >> y >> z;
// 计算余数
int rest = z % (3 * x + y);
// 根据不同的余数情况进行计算和输出
if (rest == 0) {
cout << (z / (3 * x + y)) * 3 << endl;
} else {
if (rest <= x + y) {// 一天内能够完成
cout << (z / (3 * x + y)) * 3 + 1 << endl;
} else if (rest <= 2 * x + y) {// 两天内能够完成
cout << (z / (3 * x + y)) * 3 + 2 << endl;
} else {// 三天内能够完成
cout << (z / (3 * x + y)) * 3 + 3 << endl;
}
}
return 0;
}
x, y, z = map(int, input().split())
# 计算余数
rest = z % (3 * x + y)
# 根据不同的余数情况进行计算和输出
if rest == 0:
print((z // (3 * x + y)) * 3)
else:
if rest <= x + y: # 一天内能够完成
print((z // (3 * x + y)) * 3 + 1)
elif rest <= 2 * x + y: # 两天内能够完成
print((z // (3 * x + y)) * 3 + 2)
else: # 三天内能够完成
print((z // (3 * x + y)) * 3 + 3)
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int x, y, z;
// 输入 x、y、z 的值
x = scanner.nextInt();
y = scanner.nextInt();
z = scanner.nextInt();
// 计算余数
int rest = z % (3 * x + y);
// 根据不同的余数情况进行计算和输出
if (rest == 0) {
System.out.println((z / (3 * x + y)) * 3);
} else {
if (rest <= x + y) {// 一天能够完成
System.out.println((z / (3 * x + y)) * 3 + 1);
} else if (rest <= 2 * x + y) {// 两天能够完成
System.out.println((z / (3 * x + y)) * 3 + 2);
} else {// 三天能够完成
System.out.println((z / (3 * x + y)) * 3 + 3);
}
}
scanner.close();
}
}
给定一个整数z,now从0开始,你有两种操作:
1.now+=x
2.now+=y
限定条件:
每天可以操作1次操作1,操作2使用完后必须过至少2天才能再次使用。
问最少天数使得now≥z ,。
第一行三个整数x,y,z≤1e9
输出最少次数,一个整数.
输入
1 2 10
输出
6
第1天:进行操作1,2 , now = 3
第2天:进行操作1 , now = 4
第3天:进行操作1 , now = 5
第4天:进行操作1,2 , now = 8
第5天:进行操作1 , now = 9
第6天:进行操作1 , now = 10