HDU 5611 Baby Ming and phone number

#include<cstdio>
#include<cstring>
#include<vector>
#include<cmath>
#include<queue>
#include<list>
#include<algorithm>
using namespace std;

int T,n;
char s[20];
long long a,b;
int q1[20],q2[20];

long long f()
{
    if(s[10]==s[9]&&s[10]==s[8]&&s[10]==s[7]&&s[10]==s[6]) return a;
    bool fail=0;
    for(int i=7;i<=10;i++) if(s[i]-s[i-1]!=1) fail=1;
    if(fail==0) return a;
     fail=0;
    for(int i=7;i<=10;i++) if(s[i]-s[i-1]!=-1) fail=1;
    if(fail==0) return a;

    int year=(s[3]-'0')*1000+(s[4]-'0')*100+(s[5]-'0')*10+(s[6]-'0');
    int month=(s[7]-'0')*10+(s[8]-'0');
    int day=(s[9]-'0')*10+(s[10]-'0');

    if(year>=1980&&year<=2016)
    {
        if(month>=1&&month<=12)
        {
            if( ((0 == year%4)&&(0 != year%100)) ||(0 == year %400) )
            {
                if(day>=1&&day<=q2[month]) return a;
            }
            else
            {
                if(day>=1&&day<=q1[month]) return a;
            }
        }
    }
    return b;
}

int main()
{
    q1[1]=31;
    q1[2]=28;
    q1[3]=31;
    q1[4]=30;
    q1[5]=31;
    q1[6]=30;
    q1[7]=31;
    q1[8]=31;
    q1[9]=30;
    q1[10]=31;
    q1[11]=30;
    q1[12]=31;

    q2[1]=31;
    q2[2]=29;
    q2[3]=31;
    q2[4]=30;
    q2[5]=31;
    q2[6]=30;
    q2[7]=31;
    q2[8]=31;
    q2[9]=30;
    q2[10]=31;
    q2[11]=30;
    q2[12]=31;
    scanf("%d",&T);
    while(T--)
    {
        scanf("%d",&n);
        scanf("%lld%lld",&a,&b);
        long long ans=0;
        for(int i=1;i<=n;i++)
        {
            scanf("%s",s);
            ans=ans+f();
        }
        printf("%lld\n",ans);
    }
    return 0;
}

 

posted @ 2016-01-25 17:08  Fighting_Heart  阅读(185)  评论(0编辑  收藏  举报