考研算法
题目
题目要求
简单的日期转换
代码
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
int y,d;
while(scanf("%d %d\n",&y,&d)!=EOF)
{
if ((y%100==0 && y%400==0) || (y%100!=0 && y%4==0))
{
int s[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};
int i=1;
for(i;i<=12;i++)
{
if (d-s[i]<=0)
{
break;
}
else
{
d=d-s[i];
}
}
printf("%04d-%02d-%02d\n",y,i,d);
}
else
{
int s[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int i=1;
for(i;i<=12;i++)
{
if (d-s[i]<=0)
{
break;
}
else
{
d=d-s[i];
}
}
printf("%04d-%02d-%02d\n",y,i,d);
}
}
return 0;
}
import sys
for line in sys.stdin:
y,d = map(int,line.split())
if (y%400==0 and y%100==0) or (y%100!=0 and y%4==0):
i=1;
s=[0,31,29,31,30,31,30,31,31,30,31,30,31]
for _ in range(12):
if d-s[i]<=0:
break
else:
d=d-s[i]
i=i+1
print("{:0>4d}-{:0>2d}-{:0>2d}".format(y,i,d))
else:
i=1;
s=[0,31,28,31,30,31,30,31,31,30,31,30,31]
for _ in range(12):
if d-s[i]<=0:
break
else:
d=d-s[i]
i=i+1
print("{:0>4d}-{:0>2d}-{:0>2d}".format(y,i,d))
知识点
无输入时停止
C++:while(scanf("%d %d\n",&y,&d)!=EOF)
python:
import sys
for line in sys.stdin:
y,d = map(int,line.split())
闰年判断
可被400整除且能被100整除
或
不能被100整除但可以被4整除
格式化输出不足补零
C++:printf("%04d-%02d-%02d\n",y,i,d);
python:print("{:0>4d}-{:0>2d}-{:0>2d}".format(y,i,d))
python format用法详解_陈新明博客-CSDN博客_python语言format用法
Python format 格式化函数 | 菜鸟教程 (runoob.com)