USACO1.1 Friday the Thirteenth(friday )

        本題思路簡單,計算從1900年1月1日(星期1)到1900+n-1年12月31日中,每年中每一月的13日與1899年12月31日(星期0)的天數差,對7取餘就是該天的星期數。spa

        犯了一個錯誤,在判斷某年是否閏年時,忽略了運算符優先級,致使錯誤。code

/*
ID:jzzlee1
PROG:friday
LANG:C++
*/
#include<fstream>
#include<cstring>
using namespace std;
ifstream fin("friday.in");
ofstream fout("friday.out");
int lun[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};
int unlun[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
bool lunornot(int i)
{
	int year=1900+i-1;
	if(year%400==0||year%4==0&&year%100!=0)
		return 1;
	else
		return 0;
}
int main()
{
	int n,a[7];
	fin>>n;
		memset(a,0,sizeof(a));
		int sum=0;
		int i,j;
		for(i=1;i<=n;i++)
		{
			if(i==1)
				sum+=13;
			else sum+=31;
			a[sum%7]++;
			for(j=1;j<=11;j++)
			{
				if(lunornot(i))
					sum+=lun[j];
				else
					sum+=unlun[j];
				a[sum%7]++;
			}
		}
		fout<<a[6];int x=0;
		for(i=0;i<6;i++)
			fout<<" "<<a[i];
		fout<<endl;
	return 0;
}
相關文章
相關標籤/搜索