刷题统计
问题描述
小明决定从下周一开始努力刷题准备蓝桥杯竞赛。他计划周一至周五每天做 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;}