[蓝桥杯 2022 省 B] 刷题统计
题目描述
小明决定从下周一开始努力刷题准备蓝桥杯竞赛。他计划周一至周五每天做 a a a 道题目,周六和周日每天做 b b b 道题目。请你帮小明计算,按照计划他将在第几天实现做题数大于等于 n n n 题?
输入格式
输入一行包含三个整数 a , b a, b a,b 和 n n n.
输出格式
输出一个整数代表天数。
样例 #1
样例输入 #1
10 20 99
样例输出 #1
8
提示
对于 50 % 50 \% 50% 的评测用例, 1 ≤ a , b , n ≤ 1 0 6 1 \leq a, b, n \leq 10^{6} 1≤a,b,n≤106.
对于 100 % 100 \% 100% 的评测用例, 1 ≤ a , b , n ≤ 1 0 18 1 \leq a, b, n \leq 10^{18} 1≤a,b,n≤1018.
蓝桥杯 2022 省赛 B 组 C 题。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
long a = sc.nextLong(); // 工作日做题数
long b = sc.nextLong(); // 周末做题数
long n = sc.nextLong(); // 目标做题数
long sum = 0; // 初始化做题总数为0
long day = 1;//如果放在for循环变成局部变量的话,输出时无法识别
for (; sum < n; day++) {
sum += (day % 7 <= 5 && day % 7 >= 1) ? a : b;
// 判断当天是工作日还是周末,并累加对应的做题数
// 如果在增加当天做题数后,sum已经达到或超过n,则跳出循环
if (sum >= n) {
break;
}
}
System.out.println(day);
// 输出满足条件的天数,由于循环结束后day已经多加了一天,所以需要减去1
// 关闭Scanner以释放资源
sc.close();
}
}
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
long a = scanner.nextLong(); // 工作日做题数
long b = scanner.nextLong(); // 周末做题数
long n = scanner.nextLong(); // 目标做题数
long s = 5 * a + 2 * b; // 一周做的题数
long s1 = n % s; // 还剩几题
long s2 = n / s; // 做了几周
if (s1 <= 5 * a) { // 如果工作日能完成
System.out.println(s2 * 7 + ((s1 + a - 1) / a));
} else {
System.out.println(s2 * 7 + 5 + ((s1 - 5 * a + b - 1) / b));
}
scanner.close();
}
}