本題思路簡單,計算從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; }