Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

这个问题解决了,但还是WA……

Posted by JiangLY at 2005-06-04 12:48:26 on Problem 2080
In Reply To:对73050你的程序肯定说那天是2200年的元旦,可惜前一天元旦就过了 Posted by:frkstyc at 2005-06-04 12:45:05
const
  c:array[1..12] of longint=(31,28,31,30,31,30,31,31,30,31,30,31);
  p:array[1..7] of string=('Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday');
var
  y,m,d,w,i,n:longint;
function ok(q:longint):boolean;
begin
  if (q mod 100=0)and(q mod 400=0) then ok:=true
  else if (q mod 100<>0)and(q mod 4=0) then ok:=true
  else ok:=false;
end;
begin
  while true do
    begin
      readln(n);
      if n=-1 then halt;
      y:=2000;
      m:=1;
      d:=1;
      w:=6;
      while (ok(y)and(n>=366+365*3))or((not(ok(y)))and(n>=365*4)) do
        begin
          if ok(y) then
            begin
              w:=(366+365*3+w) mod 7;
              if w=0 then w:=7;
              dec(n,366+365*3);
            end
                  else
            begin
              w:=(365*4+w) mod 7;
              if w=0 then w:=7;
              dec(n,365*4);
            end;
          inc(y,4);
        end;
      while ((ok(y))and(n>=366))or((not(ok(y)))and(n>=365)) do
        begin
          inc(y);
          if ok(y) then
            begin
              w:=(366 mod 7+w) mod 7;
              if w=0 then w:=7;
              dec(n,366);
            end
                       else
            begin
              w:=(365 mod 7+w) mod 7;
              if w=0 then w:=7;
              dec(n,365);
            end;
        end;
      for i:=1 to n do
        begin
          w:=w mod 7+1;
          if (m=2)and(ok(y)) then d:=d mod (c[m]+1)+1
                             else d:=d mod c[m]+1;
          if d=1 then m:=m mod 12+1;
          if (m=1)and(d=1) then inc(y);
        end;
      write(y,'-');
      if m<10 then write('0',m,'-')
              else write(m,'-');
      if d<10 then write('0',d,' ')
              else write(d,' ');
      writeln(p[w]);
    end;
end.
还是WA……

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator