题目链接:
题目描述:
小明决定从下周一开始努力刷题准备蓝桥杯竞赛。
他计划周一至周五每天做 a 道题目,周六和周日每天做 b 道题目。
请你帮小明计算,按照计划他将在第几天实现做题数大于等于 n 题?
输入格式 输入一行包含三个整数 a,b 和 n。
输出格式 输出一个整数代表天数。
数据范围 对于 50% 的评测用例,1≤a,b,n≤106, 对于 100% 的评测用例,1≤a,b,n≤1018。
输入样例:
10 20 99
输出样例:
8
样例解释:
无
题目分析:
就是一道简单思维题,直接求一共需要多少周,再算剩下几天就可以了.要注意开LL
算法1:
枚举 – 时间复杂度O(1):
代码:
/*
* @Author: suhuamo
* @Date: 2022-04-10 11:17:17
* @LastEditTime: 2022-04-13 15:23:37
* @FilePath: \algorithm\蓝桥杯\第十三届蓝桥杯省赛B\C.cpp
* @slogan: 也许散落在浩瀚宇宙的小行星们也知道
* 知识点: 简单模拟
* 算出一共需要多少个星期,然后再加上零几天,就是最后需要的天数
*/
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef pair<int, int> PII;
const int N = 1e5 + 10;
int main(){
LL a, b, n;
cin >> a >> b >> n;
// 算出一周能刷多少题
LL sum = a * 5 + b * 2;
// 一共需要刷多少周
LL week = n / sum;
// 去掉周数后还剩下多少题
n -= week * sum;
LL days = week * 7;
// 剩下的题一天一天去刷就行了
for(int i = 0; i < 5; i++)
{
if(n > 0)
{
n -= a;
days++;
}
}
for(int i = 0; i < 2; i++)
{
if(n > 0)
{
n -= b;
days++;
}
}
cout << days << endl;
return 0;
}