[USACO1.1]黑色星期五Friday the Thirteenth

版权声明:转载无所谓的。。。 https://blog.csdn.net/xuxiayang/article/details/82949712

大意

1900 1900 1 1 1 1 日到 1900 + n 1 1900+n-1 12 12 31 31 日中每个月的13号都有几个星期一,星期二,星期三……


思路

暴力模拟


代码

#include<cstdio>
using namespace std;int year=1900,month=1,day=1,date=1,n,ans[8];
const short mday[13]={29,31,28,31,30,31,30,31,31,30,31,30,31};//对应每个月的天数,mday[0]表示闰年二月
signed main()
{
	scanf("%d",&n);
	while(year!=1900+n-1||month!=12||day!=31)//当没到的时候就一直加
	{
		date=date%7+1;day++;if(day==13)ans[date]++;//计算
		if(year%100!=0&&year%4==0||year%400==0)
		if(month==2) {if(day>mday[0]) month++,day=1;}//二月特殊处理
		else {if(day>mday[month]) month++,day=1;}
		else if(day>mday[month]) month++,day=1;
		if(month==13) year++,month=1;//记得处理年份
	}
	printf("%d %d %d %d %d %d %d",ans[6],ans[7],ans[1],ans[2],ans[3],ans[4],ans[5]);//输出
}

猜你喜欢

转载自blog.csdn.net/xuxiayang/article/details/82949712