这道题不难,计算好总天数然后对7取余数看看是不是3就知道是不是大扫除那天。如果不是大扫除直接减去大扫除的天数再对4取模就知道该谁扫地了。
#include
int
main()
{
int
m[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int
year,month,day;
int
i;
while
(
scanf
(
"%d %d %d"
,&year,&month,&day)!=EOF)
{
for
(i = 0;i < month-1;i++)
day+=m[i];
day = day+(year-2007)*365-243;//计算总天数
if
((year==2008&&month>2)||year>2008)
day++;
if
(day%7==3)
{
printf
(
"ALL\n"
);
continue
;
}
int
sum =(day-day/7);//减去all的天数
if
(day%7>=3)//如果大于了3则有一天all没有计算到。
sum--;
switch
(sum%4)
{
case
1:
printf
(
"B\n"
);
break
;
case
2:
printf
(
"X\n"
);
break
;
case
3:
printf
(
"H\n"
);
break
;
case
0:
printf
(
"P\n"
);
break
;
}
}
return
0;
}