题目描述
输入年、月、日,计算该天是本年的第几天。
注意闰年的 2 月有 29 天。
满足下面条件之一的是闰年:
年份是 4 的整数倍,而且不是 100 的整数倍;
年份是 400 的整数倍。
输入格式
输入包含多组测试数据。
每组数据占一行,包含三个整数 Y,M,D,表示年、月、日。
输出格式
每组数据输出一个整数,占一行,表示输入给定的年、月、日对应本年的第几天。
数据范围
1≤Y≤3000,
1≤M≤12,
1≤D≤31,
输入最多包含 100 组测试数据。
保证所有日期都是合法的。
样例
输入样例:
1990 9 20
2000 5 1
输出样例:
263
122
算法1
直接模拟
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+7;
int dd[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int y,m,d;
int is_yun(int y)
{
if(y%4==0&&(y%100!=0||y%400==0))
return true;
return false;
}
int main()
{
while(cin>>y>>m>>d)
{
dd[2]=28;
int ans=0;
if(is_yun(y))
{
dd[2]=29;
}
for(int i=1;i<m;i++)
{
ans+=dd[i];
}
ans+=d;
cout<<ans<<endl;
dd[2]=28;
}
return 0;
}