2015编程之美资格赛第一题:2月29日
题目链接:http://hihocoder.com/contest/msbop2015qual/problem/1
分析:模拟题,没什么算法,注意细节就行了。
实现代码如下:
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
char mon[12][10]={"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November" , "December"};
int main()
{
int t,T=1;
scanf("%d",&t);
char month[2][10],c;
int m,d,y,m1,d1,y1;
int cnt;
while(t--)
{
cnt=0;
scanf("%s",month[0]);
scanf("%d%c%d",&d,&c,&y);
scanf("%s",month[1]);
scanf("%d%c%d",&d1,&c,&y1);
for(int i=0;i<12;i++)
if(strcmp(month[0],mon[i])==0)
{
m=i+1;
break;
}
for(int i=0;i<12;i++)
if(strcmp(month[1],mon[i])==0)
{
m1=i+1;
break;
}
if(y==y1)
{
if((y%400==0)||(y%4==0&&y%100!=0))
if((m==1||(m==2&&d<=29))&&(m1>2||(m1==2&&d1==29)))
cnt++;
}
else
{
if((y%400==0)||(y%4==0&&y%100!=0))
if((m==1)||(m==2&&d<=29)) cnt++;
cnt+=(y1-1)/4-(y1-1)/100+(y1-1)/400-(y/4-y/100+y/400);
if((y1%400==0)||(y1%4==0&&y1%100!=0))
if(m1>2||(m1==2&&d1==29)) cnt++;
}
printf("Case #%d: %d\n",T++,cnt);
}
return 0;
}