Problem D
Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other)
Total Submission(s) : 8 Accepted Submission(s) : 1
Problem Description
给定一个日期,输出这个日期是该年的第几天。
Input
输入数据有多组,每组占一行,数据格式为YYYY/MM/DD组成,具体参见sample input ,另外,可以向你确保所有的输入数据是合法的。
Output
对于每组输入数据,输出一行,表示该日期是该年的第几天。
#include<cstdio>
#include<cstring>
int yy[][13] = {{0,31,29,31,30,31,30,31,31,30,31,30,31},{0,31,28,31,30,31,30,31,31,30,31,30,31}};//把每年的月份存起来
int main()
{
int y,m,d;
int i,r;
while(~scanf("%d/%d/%d",&y,&m,&d))
{
int ans = 0;
if( (y%4==0&&y%100!=0)||(y%400==0) )//判断是否是闰年
r = 0;
else
r = 1;
for(i=1;i<m;i++)
ans+=yy[r][i];//再把月份以内天数加起来,最后把天数加上
printf("%d\n",ans+d);
}
return 0;
}
Sample Input
1985/1/20 2006/3/12
Sample Output
20 71
这道题首先判断是否是闰年,然后把每年的月天数份存起来打表,每次相加就搞定了