2015编程之美资格赛:2月29日 模拟题

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;
}


你可能感兴趣的:(2015编程之美资格赛:2月29日 模拟题)