题目
小明决定从下周一开始努力刷题准备蓝桥杯竞赛。他计划周一至周五每天做 a 道题目,周六和周日每天做 b 道题目。请你帮小明计算,按照计划他将在第几天实现做题数大于等于 n 题?
题目描述:
小明决定从下周一开始努力刷题准备蓝桥杯竞赛。他计划周一至周五每天做 a 道题目,周六和周日每天做 b 道题目。请你帮小明计算,按照计划他将在第几天实现做题数大于等于 n 题?
输入格式:
输入一行包含三个整数 a, b 和 n.
输出格式:
输出一个整数代表天数。
样例输入:
10 20 99
样例输出:
8
思路
直接循环会超时,所有有先计算要几周后再计算剩余的天数
代码
#include <iostream>
using namespace std;
int main()
{
// 请在此输入您的代码
long long d = 0;
long long a,b,aim;
cin>>a>>b>>aim;
long long aweek = 5*a+2*b;
long long day = aim/aweek;//周数
long long remain = aim%aweek;//剩余的天数
long long c[7] = {a,a,a,a,a,b,b};
while(remain > 0){
remain -= c[d++];
}
long long sum = day*7 + d;
cout<<sum;
return 0;
}
总结
- 对于评测用例规模有要求的,求计数的题目,我们可以先计算大的部分后计算小的部分(先解决大的问题再解决小的问题,把大的问题分成部分的问题)