题目描述
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);
}
}
}