考研算法
题目
题目要求
日期模拟
代码
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int main()
{
int T;
cin>>T;
while(T--)
{
int y,m,d,a;
cin>>y>>m>>d>>a;
int months[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
a=a+d;
d=0;
int i=m;
for(i;i<13;i++)
{
// printf("%d--%d----%d\n",y,m,i);
if (i==2 )
{
int flag=0;
if (y%400==0 && y%100==0 || y%100!=0 && y%4==0)
{
flag=1;
// printf("%d is True\n",y);
}
months[2]+=flag;
}
if (i==12 && a-months[12]>0)
{
y+=1;
i=0;
a=a-months[12];
continue;
}
if (a-months[i]<=0)
{
d=a;
m=i;
break;
}
else
{
a=a-months[i];
}
months[2]=28;
}
printf("%04d-%02d-%02d\n",y,m,d);
}
}
import datetime as dt
n=int(input())
for _ in range(n):
y,m,d,a=map(int,input().split())
x=dt.date(y,m,d)
x+=dt.timedelta(a)
print(x.isoformat())
知识点
对于闰年二月的处理
直接对months[2]进行更改,然后末尾再改回来 months[2]=28;
if (i==2 )
{
int flag=0;
if (y%400==0 && y%100==0 || y%100!=0 && y%4==0)
{
flag=1;
// printf("%d is True\n",y);
}
months[2]+=flag; //这地方本来写的a=a-flag,有些数据就是过不了,改成这样
}
python的datetime模块
这个库很强大,处理问题很简单
Python日期时间模块datetime详解与Python 日期时间的比较,计算实例代码_python_脚本之家 (jb51.net)