大吉大利

链接: https://www.nowcoder.com/acm/contest/115/B
来源:牛客网

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld

题目描述

给出一个出生日期,比如:1999-09-09,
问:从出生那一天开始起,到今天2018-04-21为止(包括出生日期和今天),有多少天,年月日都不包含数字4?

输入描述:

第一行输入一个整数T(表示样例个数)
接下来T组样例
每个样例一行,包含一个字符串“yyyy-mm-dd”(1990<=yyyy<=2018)
题目保证测试数据的正确性

输出描述:

输出题意要求的天数
示例1

输入

1
1999-09-09

输出

5020
#include<iostream>
#include<cstdio>
using namespace std;
int a[2020][20][40];
void solve(){
        int cnt=0;
        for(int i=1990;i<=2018;i++){
            for(int j=1;j<=12;j++){
                if(j==2){
                    if(((i%4==0)&&(i%100!=0))||(i%400==0)){
                        for(int k=1;k<=29;k++){
                            if((i%10!=4)&&(j%10!=4)&&(k%10!=4))
                                cnt++;
                                
                                a[i][j][k]=cnt;
                        }
                    }
                    else{
                        for(int k=1;k<=28;k++){
                            if((i%10!=4)&&(j%10!=4)&&(k%10!=4))
                                cnt++;
                                a[i][j][k]=cnt;
                        }
                    }
                }
                else if(j==1||j==3||j==5||j==7||j==8||j==10||j==12){
                    for(int k=1;k<=31;k++){
                            if((i%10!=4)&&(j%10!=4)&&(k%10!=4))
                                cnt++;
                                a[i][j][k]=cnt;
                        }
                }
                else if(j==2||j==4||j==6||j==9||j==11){
                    for(int k=1;k<=30;k++){
                            if((i%10!=4)&&(j%10!=4)&&(k%10!=4))
                                cnt++;
                                a[i][j][k]=cnt;
                        }
                }
            }
        }
}
int main(){
    int n,x,y,z;
    cin>>n;
    solve();
    while(n--){
        scanf("%d-%d-%d",&x,&y,&z);
        int t=(a[2018][4][21]-a[x][y][z]);
        if((x%10!=4)&&(y%10!=4)&&(z%10!=4))
            t+=1;
        cout<<t<<endl;
    }
return 0;
}

猜你喜欢

转载自blog.csdn.net/yimo_180227/article/details/80219605