题目: | 黑色星期五 | |
来源: | Usaco1.1.3 | |
题目大意: | 求1900年到之后N年,13号在星期一至七出现的次数 | |
数据范围: | N<=400 | |
样例: |
20 |
36 33 34 33 35 35 34 |
做题思路: | 貌似方法不少,我采用的比较偷懒,就是直接套蔡勒公式 | |
知识点: | 模拟、蔡勒公式 |
{
ID:Dount Nameless
TASK:friday
LANG:PASCAL
}
var
w:array[0..6]of longint;
n,c,y,m,d,i,j,k,tim:longint;
begin
assign(input,'friday.in');reset(input);
assign(output,'friday.out');rewrite(output);
readln(n);
d:=13;
fori:=1900 to 1900+n-1 do
begin
for j:=1 to 12 do
begin
if j<3 then
begin
m:=j+12;{<前三个月等于去年的后三个月,这样倒下才能应用蔡勒公式>}
c:=(i-1)div 100;
y:=(i-1)mod 100;
end
else
begin
c:=i div 100;
y:=i mod 100;
m:=j;
end;
inc(w[((y+y div 4+c div 4-2*c+(26*(m+1)div 10)+d-1)mod 7+7)mod 7]);{<蔡勒公式>}
end;
end;
write(w[6],' ',w[0],' ');
fori:=1 to 4 do
write(w[i],' ');
writeln(w[5]);
close(input);close(output);
end.
题目来源:
http://ace.delos.com/usacoprob2?a=YqYGTaSaabV&S=friday