【题意】
2000年1月1日后n天是几月几号周几
【输入】
多组数据,以-1结尾
每行一个数字表示n
【输出】
对于每组数据输出年月日周几
例如:2004-09-06 Saturday
大水题,考验一下细心程度,顺便说一下,2000年1月1日是周六
program poj2080;
const
long:array [1..12] of longint=(31,28,31,30,31,30,31,31,30,31,30,31);
var
y,m,d,n,i,j,k,no:longint;
begin
repeat
read(n);
if n=-1 then break;
no:=(6+n) mod 7;
if no=0 then no:=7;
y:=2000;
m:=1;
d:=1;
repeat
if (y mod 4 = 0)and
((y mod 100<>0)or((y mod 100 = 0)and(y mod 400 = 0))) then
k:=366
else
k:=365;
inc(y);
n:=n-k;
until n<0;
dec(y);
n:=n+k;
repeat
k:=long[m];
if (m=2)and(y mod 4 = 0)and
((y mod 100<>0)or((y mod 100 = 0)and(y mod 400 = 0))) then inc(k);
inc(m);
n:=n-k;
until n<0;
dec(m);
n:=n+k;
d:=d+n;
if d>k then
begin
d:=d-k;
inc(m);
end;
write(y,'-');
if m<10 then write(0);
write(m,'-');
if d<10 then write(0);
write(d,' ');
case no of
1:writeln('Monday');
2:writeln('Tuesday');
3:writeln('Wednesday');
4:writeln('Thursday');
5:writeln('Friday');
6:writeln('Saturday');
7:writeln('Sunday');
end;
until false;
end.