天天看点

[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.