前言
- 不知道在本次入门教育赛大家有没有写出这道节假日呢?
- 快速食用通道:入门教育赛7B 节假日丨StarryCoding
问题描述
在星码星球上,一年正好是 n n n 天,但是星码人的周数和地球人一样,都是 5 5 5 个工作日,然后休息 2 2 2 天, 您的任务是确定星码星球上每年可能的最少和最多休息天数
输入格式
输入的第一行包含一个正整数 t ( 1 ≤ t ≤ 1000 ) t(1 \le t \le 1000) t(1≤t≤1000) 表示 t t t 个测试用例
之后 t t t 行,每行输入一个整数 n n n 表示星码星球上一年的天数
输出格式
每个测试用例输出一行,两个空格隔开的整数,表示星码星球上每年可能的最少和最多休息天数
输入样例
2
14
2
输出样例
4 4
0 2
样例解释
在第一个样例中,星码星球上一年有 14 14 14 天,因此无论一年的第一天从周几开始,都会恰好有 4 4 4 天的休息日
在第二个样例中,星码星球上一年只有 2 2 2 天,它们既可以是工作日,也可以是休息日。
题解思路
该题目其实就是考察对星期的理解,当我们总天数和每周的天数固定的情况下:
- 让当年的每周的开始的时候为节假日一定能使得假期最多
- 让当年的每周的结束的时候为节假日一定能使得假期最少
故按照以上逻辑分别求能上满的周和剩余那个上不满的周的天数即可
AC代码
#include <bits/stdc++.h>
using namespace std;
void solve() {
int n; cin >> n;
int week = n / 7;
int remainWeek = n % 7;
int minD = week * 2;
int maxD = minD + min(2, remainWeek);
cout << minD + max(0, remainWeek - 5) << ' ' << maxD << '\n';
}
int main() {
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
int _; cin >> _;
while (_--) solve();
return 0;
}