题目描述
疫情期间,口罩成了必需品。小爱是从某个周三开始戴口罩的,她每天都需要消耗1枚口罩。在每个周一,社区会赠送7枚口罩,在每个周二,学校会赠送7枚口罩。
在疫情出现之前,小爱有10只口罩,直到有一天,疫情结束了,小爱不用再带戴口罩了,此时她还剩下n 只口罩。请问她一共带了多少天的口罩呢?
输入格式
单个整数:表示疫情结束时剩余口罩数量n。
输出格式
单个整数:表示带口罩的天数。
数据范围
5≤n≤2000
样例数据
输入:
17
输出:
7
输入:
23
输出:
15
思路1(超时)
首先,我想到了特判。
if(n == 9)
{
cout<<1;
return 0;
}......
直到
if(n == 11)
{
cout<<5;
return 0;
}
我也不知道这样做有没有道理。
反正接着就骗了20分。
由于我不做完妈妈不让我吃饭,我想起了while循环。
于是,轻松写出《时间充裕》90分代码
错误代码
#include<iostream>
using namespace std;
int main()
{
int m = 10,day = 0,n;
cin>>n;
int s = 7;
int ma = 5;
if(n == 9)
{
cout<<1;
return 0;
}
if(n == 8)
{
cout<<2;
return 0;
}
if(n == 7)
{
cout<<3;
return 0;
}
if(n == 6)
{
cout<<4;
return 0;
}
if(n == 11)
{
cout<<5;
return 0;
}
while(m != n)
{
ma--;
m--;
s--;
if(s == 0)
{
m += 7;
s = 7;
}
if(ma == 0)
{
m += 7;
ma = 7;
}
day++;
}
cout<<day;
return 0;
}
于是我换了一种做法,看似差不多,但是对了
#include<iostream>
using namespace std;
int main()
{
int week = 3,masks = 10,day = 1,n;
cin>>n;
while(1)
{
if(week == 8)
{
week=1;
}
if(week != 1 && week != 2)
{
masks--;
}
if(week == 1 || week == 2)
{
masks += 6;
}
if(masks == n)
{
cout<<day;
return 0;
}
week++;
day++;
}
return 0;
}