刷题统计
问题描述
小明决定从下周一开始努力刷题准备蓝桥杯竞赛。他计划周一至周五每天做 a 道题目,周六和周日每天做 b 道题目。请你帮小明计算,按照计划他将在第几天实现做题数大于等于 n 题?
输入格式
输入一行包含三个整数 a, b 和 n。
输出格式
输出一个整数代表天数。
样例输入
18 28 99
样例输出
8
评测用例规模与约定
- 对于 50% 的评测用例,1≤a,b,n≤10^6。
- 对于 100% 的评测用例,1≤a,b,n≤10^18。
思路:
数据很大,暴力只有50分,所以优化一下就是直接求出有多少周,再求剩下的天数
代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main(void)
{
ll a,b,n;
cin >> a >> b >> n;
ll num[] = {0,a,a,a,a,a,b,b};
ll T_sum = a*5+2*b;
ll T = n / T_sum;
ll t1 = 7*T;
ll SPC = n - (T*5*a+T*2*b);//剩下的题数
ll sum = 0,pos = 1,t2 = 0;
while(SPC > 0)
{
SPC -= num[pos];
pos++;
t1++;
if(pos == 8)
pos = 1;
}
ll ans = t1;
cout << ans << endl;
return 0;
}
