RNG牛逼

题目描述

RNG在2018年10月20日给G2打败,HJ很伤心,但他看到弹幕里面的7777777时他就更加伤心,所以他就很讨厌7这个数字。WXS是个EDG的铁粉,他看到7777777的时候就很开心,他提出一个“好玩”的游戏,那就是他说出一个年月日然后求出这个日子到RNG失败回家的那一天一共过去几天,由于HJ很讨厌7所以HJ会把含7的年月日给删除。

#include"stdio.h"
#include"string.h"
int panduan(int n)//判断是否有7
{
    while(n)
    {
        if(n%10==7)
        {
            return 0;
        }
        n=n/10;
    }
    if(n==0)
        return 1;
    else
        return 0;
}
int year1(int year)判断是否闰年
{
    if(year%400==0||(year%4==0&&year%100!=0))
        return 1;
    else
        return 0;

}
int main()
{
    int year,mouth,day;
    int data[13]= {0,31,28,31,30,31,30,31,31,30,31,30,31};
    int t,i,j,pyear,pmouth,pday;
    int n;
    while(~scanf("%d",&t))

    {
        while(t--)
        {
            n=0;
            scanf("%d-%d-%d",&year,&mouth,&day);
            if((year!=2018))/*2018年单独判断 ,如果没此if则会执行一次循环。*/
                for(pyear=year; pyear<2018; pyear++)
                {
                    if(!(panduan(pyear)==1))
                    {
                        mouth=1;
                        day=1;
                        continue;
                    }
                    if(year1(pyear)==1)
                        data[2]=29;
                    else
                        data[2]=28;
                    for(pmouth=mouth; pmouth<13; pmouth++)
                    {
                        if(!(panduan(pmouth)==1))
                        {
                            day=1;
                            continue;
                        }
                        if(mouth!=1)
                            mouth=1;
                        for(pday=day; pday<=data[pmouth]; pday++)
                        {
                            if(day!=1)
                                day=1;
                            if(!(panduan(pday)))
                                continue;
                            n++;
                        }
                    }

                }
            if(year1(pyear)==1)
                data[2]=29;
            else
                data[2]=28;
            //   mouth=1;
            //   day=1;
            //   printf("data[2]=%d\n",data[2]);
            if(mouth!=10)//判断是否为10月 
                for(pmouth=mouth; pmouth<10; pmouth++)
                {
                    if((panduan(pmouth)==0))
                    {
                        day=1;
                        continue;
                    }
                    for(pday=day; pday<=data[pmouth]; pday++)
                    {
                        day=1;/*如果没此语句,则2018-9-10的时候day永远不会为一,会是整个天数变少*/
                        if((panduan(pday)==0))
                            continue;
                        n++;
                    }
                }
            for(pday=day; pday<=20; pday++)
            {
                if(!(panduan(pday)==1))
                    continue;
                n++;
            }
            printf("%d\n",n);
            //  n=0;
            //  printf("%lld\n",n);
        }

    }
}

猜你喜欢

转载自blog.csdn.net/qq_43506138/article/details/83791972