戴口罩 题目难度:简单 时间限制:1000ms 内存限制:128mb 题目描述 疫情期间,口罩成了必需品。小T是从某个周三开始戴口罩的,他每天都需要消耗1枚口罩。在每个周一,社区会赠送7枚口罩,在每个周二,学校会赠送7枚口罩。 在疫情出现之前,小T有10只口罩,直到有一天,疫情结束了,小T不用再带戴口罩了,此时他还剩下n只口罩。请问他一共带了多少天的口罩呢? 输入格式 单个整数:表示疫情结束时剩余口罩数量n 。 输出格式 单个整数:表示带口罩的天数。 样例数据 样例输入 1 17 样例输出 1 7 样例输入 2 23 样例输出 2 15 提示 对于100%数据,运行时间不超过1000毫秒
时间: 2024-04-17 12:23:26 浏览: 16
解题思路:
根据题意,小T每天需要消耗1枚口罩,每个周一和周二会赠送7枚口罩。
因此,可以使用循环来模拟小T带口罩的过程,直到口罩剩余数量小于等于0为止。
具体步骤如下:
1. 初始化变量count为0,代表带口罩的天数。
2. 使用一个while循环,当n大于0时进行循环。
3. 判断当前是周一还是周二,根据不同的情况,进行相应的操作:
- 如果是周一,则从社区赠送7枚口罩,并且n减去7。
- 如果是周二,则从学校赠送7枚口罩,并且n减去7。
- 其他情况下,小T每天需要消耗1枚口罩,n减去1。
4. 每次循环结束后,count加1,代表带口罩的天数增加了一天。
5. 循环结束后,输出count即为带口罩的天数。
代码实现如下(使用C语言):
```c
#include <stdio.h>
int main() {
int n;
scanf("%d", &n);
int count = 0;
while (n > 0) {
if (count % 7 == 0) { // 判断是否是周一
n -= 7; // 社区赠送7枚口罩
} else if (count % 7 == 1) { // 判断是否是周二
n -= 7; // 学校赠送7枚口罩
} else {
n -= 1; // 每天消耗1枚口罩
}
count++;
}
printf("%d\n", count);
return 0;
}
```
复杂度分析:
时间复杂度:O(n),其中n为口罩剩余数量。最坏情况下,需要循环n次才能带完所有的口罩。
空间复杂度:O(1),只使用了常数个额外变量。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)