SWUSTOJ 509B 恶心了几个月想不通的low题

时间:2023-03-09 18:30:11
SWUSTOJ 509B 恶心了几个月想不通的low题

SWUSTOJ 509B

这个题恶心了我好久,细细算来不难,算总天数,减去星期一,与4取余,

问题在最后除掉多余的星期一,按照上述算法,在最后一个星期会出现过了星期一但不足7天,程序未能减去多余的星期一,所以加上

if(all%7>3)sum–;

当多余的天数过3(此时为星期一,因为从头开始,第三天为星期一)

减去该天,完成修正。

#include<stdio.h>
int main()
{
int y,m,d;
int month[12]={31,28,31,30,31,30,31,31,30,31,30,31};
while(~scanf("%d%d%d",&y,&m,&d))
{
int all=0;
all+=(365*(y-2007)-243);
for(int i=0;i<m-1;i++)
{
all+=month[i];
}
all+=d;
if((y==2008&&m>2)||y>2008)all++;
if(all%7==3)
{
printf("ALL\n");
continue;
}
int sum=(all-(all/7));
***if(all%7>3)sum--;***
switch(sum%4)
{
case 3 :printf("H\n");break;
case 2 :printf("X\n");break;
case 1 :printf("B\n");break;
case 0 :printf("P\n");break;
}
}
}