http://acm.hdu.edu.cn/showproblem.php?pid=2005
给定一个日期,输出这个日期是该年的第几天。
Input
输入数据有多组,每组占一行,数据格式为YYYY/MM/DD组成,具体参见sample input ,另外,可以向你确保所有的输入数据是合法的。
Output
对于每组输入数据,输出一行,表示该日期是该年的第几天。
Sample Input
1985/1/20 2006/3/12
Sample Output
20 71
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
using namespace std;
int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
char s[20];
int main()
{
while(~scanf("%s",&s))
{
int year=0,month=0,day=0;
int i;
for(i=0;i<=3;i++)
year=year*10+s[i]-'0';
for(i=5;;i++)
{
if(s[i]=='/')
break;
month=month*10+s[i]-'0';
}
for(i++;i<strlen(s);i++)
day=day*10+s[i]-'0';
int cnt=0;
for(int i=1;i<month;i++)
{
if(i==2)
{
if((year%4==0&&year%100!=0)||year%400==0)
cnt+=29;
else
cnt+=28;
}
else
cnt+=a[i];
}
cnt+=day;
printf("%d\n",cnt);
}
return 0;
}