题目描述
输入年、月、日,计算该天是本年的第几天。
输入描述:
包括三个整数年(1<=Y<=3000)、月(1<=M<=12)、日(1<=D<=31)。
输出描述:
输入可能有多组测试数据,对于每一组测试数据, 输出一个整数,代表Input中的年、月、日对应本年的第几天。
示例1
输入
1990 9 20 2000 5 1
输出
263 122
#include<iostream>
#define isyear(x) x%4==0&&x%100!=0||x%400==0?1:0
using namespace std;
int DayOfMonth[13][2]={{0,0},{31,31},{28,29},{31,31},{30,30},{31,31},{30,30},{31,31},{31,31},{30,30},{31,31},{30,30},{31,31}};
struct Date{
int year;
int month;
int day;
void nextDay(){
day++;
if(day>DayOfMonth[month][isyear(year)]){
month++;
day=1;
if(month>12){
year++;
month=1;
}
}
}
};
int buf[3001][12][32]={0};
int main(){
Date tmp;
tmp.year=0;
tmp.month=1;
tmp.day=1;
int k=0;
while(tmp.year!=3001){
buf[tmp.year][tmp.month][tmp.day]=k;
tmp.nextDay();
k++;
}
int y1,m1,d1;
while(cin>>y1>>m1>>d1){
int res=buf[y1][m1][d1]-buf[y1][1][1];
cout<<res+1<<endl;
}
return 0;
}