天天看點

[USACO1.1]黑色星期五Friday the Thirteenth-洛谷 1202

題目描述

号又是一個星期五。号在星期五比在其他日子少嗎?為了回答這個問題,寫一個程式,要求計算每個月的十三号落在周一到周日的次數。給出N年的一個周期,要求計算年月日至+N-年月日中十三号落在周一到周日的次數,N為正整數且不大于

這裡有一些你要知道的:

、年月日是星期一.

、,,和月有天.其他月份除了月都有天.閏年月有天,平年月有天.

、年份可以被整除的為閏年(=* 是以 年是閏年,但是年不是閏年).

、以上規則不适合于世紀年。可以被整除的世紀年為閏年,否則為平年。是以,,,和年是平年,而年是閏年.

請不要調用現成的函數

請不要預先算好資料(就是叫不準打表)!

輸入輸出格式

輸入格式:
一個正整數n.

輸出格式:
輸入輸出樣例

輸入樣例#1:

輸出樣例#1:
      

題解:這一道題不斷枚舉就行了。

var
  i,j,n:integer;
  day:longint;
  week:array[] of integer;
begin
  read(n);
  day:=;
  for i:= to +n- do
    for j:= to  do
       case j of
        ,,,,,,:if (i=) and (j=) then
                            begin
                               day:=day+;
                               week[day mod ]:=week[day mod ]+;
                            end else begin
                               day:=day+;
                               week[day mod ]:=week[day mod ]+;
                            end;
        :if (i mod =) and (i mod <>) or (i mod =) then
                              begin
                                day:=day+;
                                week[day mod ]:=week[day mod ]+;
                              end else 
                              begin
                                day:=day+;
                                week[day mod ]:=week[day mod ]+;
                              end;
        ,,,:begin day:=day+;week[day mod ]:=week[day mod ]+;end;
       end;
    write(week[],' ');
    for i:= to  do write(week[i],' ');
    writeln;
 end.