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;
		}
	}
}
posted @ 2019-02-25 21:31  jirath  阅读(132)  评论(0编辑  收藏  举报