[蓝桥杯 2022 省 B] 刷题统计

[蓝桥杯 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} 1a,b,n106.

对于 100 % 100 \% 100% 的评测用例, 1 ≤ a , b , n ≤ 1 0 18 1 \leq a, b, n \leq 10^{18} 1a,b,n1018.

蓝桥杯 2022 省赛 B 组 C 题。

#include
using namespace std;
int main(){
	long long a,b,n;
	long long sum = 0;//记录总做题数 
	long long count = 0;// 记录做题天数
	//int week[8];//一周 
	cin >> a >> b >> n;
//	for(int i = 1; i <= 7; i++) {
//		if( i <= 5) week[i] = a;
//		else week[i] = b;
//	}
	long long i ;
	while(1){
		for ( i = 1; i <= 5; i++){
			sum += a;
			count++;
			if(sum > n) {
				cout << count;
				return 0;
			}
		}
		for ( i = 6; i > 5 && i <= 7; i++){
			sum += a;
			count++;
			if(sum > n) {
				cout << count;
				return 0;
			}
		}
		n = 1;
	}
}

[蓝桥杯 2022 省 B] 刷题统计_第1张图片

第一次这么想,虽然结果是对的,但是不能AC,于是换一种思路

#include
using namespace std;
int main(){
	long long a,b,n;
	long long sum = 0;//记录总做题数 
	long long count = 0;// 记录做题天数 
	long long x;//记录需要几周 
	long long y;//取余后的天数 
	cin >> a >> b >> n;
	x = n / (a * 5 + b *2); //需要周数 
	y = n % (a * 5 + b *2);// 取余后的天数 
	sum = x * (a * 5 + b *2);
	count = x * 7;
	for (int i = 1; i < 8; i++){
		if(i < 6){
			sum += a;
			count ++;
			if( sum > n) {
				cout << count;
				return 0;
			}
		}
		if(i > 5 && i < 8){
			sum += b;
			count ++;
			if( sum > n) {
				cout << count;
				return 0;
			}
		}
	}
	
	
}

结果

[蓝桥杯 2022 省 B] 刷题统计_第2张图片
[蓝桥杯 2022 省 B] 刷题统计_第3张图片

你可能感兴趣的:(练习题,蓝桥杯,职场和发展,算法)