pascal 第1题 13号星期几(riqi.pas)【问题描述】编程统计从1900年1月1日(当天是星期一)开始经过的N年当中,每个月的13号是星期一、星期二、星期三……星期日的次数分别是多少?【输入】共1行,1个

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/16 00:47:41

pascal 第1题 13号星期几(riqi.pas)【问题描述】编程统计从1900年1月1日(当天是星期一)开始经过的N年当中,每个月的13号是星期一、星期二、星期三……星期日的次数分别是多少?【输入】共1行,1个
pascal 第1题 13号星期几(riqi.pas)
【问题描述】编程统计从1900年1月1日(当天是星期一)开始经过的N年当中,每个月的13号是星期一、星期二、星期三……星期日的次数分别是多少?
【输入】共1行,1个整数N(1≤n≤400).
【输出】仅1行,有7个整数(依次是星期一、星期二、星期三、……星期日的次数),各数间以空格相隔.
【样例输入】1
【样例输出】1 3 1 2 2 2 1

pascal 第1题 13号星期几(riqi.pas)【问题描述】编程统计从1900年1月1日(当天是星期一)开始经过的N年当中,每个月的13号是星期一、星期二、星期三……星期日的次数分别是多少?【输入】共1行,1个
这是USACO上面的题目,不废话,发标程:
var
n,i,j,fe,d:integer;
a:array[0..6] of integer;

begin
assign(input,'friday.in');reset(input);
assign(output,'friday.out');rewrite(output);

d:=3;
readln(n);

fillchar(a,sizeof(a),0);
for i:=1900 to 1899+n do begin
fe:=28;
if (i mod 400=0) or (i mod 4=0) and (i mod 1000) then fe:=29;
for j:=1 to 12 do
begin
case j of
1,2,4,6,8,9,11:d:=(d+31) mod 7;
5,7,10,12:d:=(d+30) mod 7;
3:d:=(d+fe) mod 7;
end;
inc(a[d]);
end;
end;

write(a[6],' ',a[0]);
for i:=1 to 5 do write(' ',a[i]);
writeln;

close(input);close(output);
end.