小明所在的城市发生了疫情,实行静态化管理,小明也被关在家里,不能去上学了。
根据当地政策,连续N天没有新增病例,就可以解封。小明知道过去M(M≤N)天的每天的新增病例数,他想知道理想情况下最早什么时候可以解封。
输入格式:
输出格式:
一行,一个日期,格式为YYYY/MM/DD,请不要有多余的空格。
输入样例:
2004/10/28
4 2
1
0
输出样例:
2004/11/01
代码实现
#include <stdio.h>
int leap(int year){
return (year%4==0&&(year%100!=0||year%400==0)); //判断闰年
}
int riqi(int y,int m,int d,int n){ //实现日期的相加,注意不同月份的天数
int month[]={0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
if (leap(y))
month[2] = 29;
else
month[2] = 28; //判断最特殊的二月的天数
for (int i = 0; i < n; i++){
d++;
if(d==month[m]+1){
m++;
d=1;
}
if(m==13){
y++;
m=1;
}
}
printf("%d/%02d/%02d", y, m, d);
return 0;
}
int main()
{
int y,m,d;
int N,M;
int i;
if(scanf("%d/%d/%d",&y,&m,&d)!=1){}
if(scanf("%d %d",&N,&M)!=1){}
int x[M],n=N;
for(i=0;i<M;i++)
{
if(scanf("%d",&x[i])!=1){}
}
for(i=0;i<M;i++)
{
if(x[i]==0)
{
n--;
}
else
{
break;
}
}
riqi(y,m,d,n);
return 0;
}