hdu2005(日期)
HDU2005第几天
给定一个日期,输出这个日期是该年的第几天。
Input
输入数据有多组,每组占一行,数据格式为YYYY/MM/DD组成,具体参见sample input ,另外,可以向你确保所有的输入数据是合法的。
Output
对于每组输入数据,输出一行,表示该日期是该年的第几天。
Sample Input
1985/1/20
2006/3/12
Sample Output
20
715
注意输入格式和闰年
2月29日前与是否闰年无关
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
int n,i,y,r,num;
char s[15];
while(gets(s))
{
n=(s[0]-'0')*1000+(s[1]-'0')*100+(s[2]-'0')*10+(s[3]-'0');
if(s[6]=='/')
{
y=s[5]-'0';
if(s[8]!='\0')
r=(s[7]-'0')*10+(s[8]-'0');
else if(s[8]=='\0')
r=s[7]-'0';
}
else if(s[6]!='/')
{
y=(s[5]-'0')*10+(s[6]-'0');
if(s[9]!='\0')
r=(s[8]-'0')*10+(s[9]-'0');
else if(s[9]=='\0')
r=s[8]-'0';
}
switch(y)
{
case 1:num=r;break;
case 2:num=r+31;break;
case 3:num=r+59;break;
case 4:num=r+90;break;
case 5:num=r+120;break;
case 6:num=r+151;break;
case 7:num=r+181;break;
case 8:num=r+212;break;
case 9:num=r+243;break;
case 10:num=r+273;break;
case 11:num=r+304;break;
case 12:num=r+334;break;
}
if(y>2&&((n%4==0&&n%100!=0)||n%400==0))
num++;
cout<<num<<'\n';
}
return 0;
}