[アルゴリズム] 正方形を数える

{$MODE OBJFPC}
program SquareCounter;
const
  InputFile  = 'SQUARES.INP';
  OutputFile = 'SQUARES.OUT';
  m = 2013;
var
  fi, fo: TextFile;
  n: Int64;
  x: array[1..3] of Int64;
  i: Integer;
  res: Int64;
begin
  AssignFile(fi, InputFile); Reset(fi);
  AssignFile(fo, OutputFile); Rewrite(fo);
  try
    while not SeekEof(fi) do
      begin
        ReadLn(fi, n);
        x[1] := n; x[2] := n + 1; x[3] := 2 * n + 1;
        for i := 1 to 3 do
          if x[i] mod 2 = 0 then
            begin
              x[i] := x[i] div 2;
              Break;
            end;
        for i := 1 to 3 do
          if x[i] mod 3 = 0 then
            begin
              x[i] := x[i] div 3;
              Break;
            end;
        res := (x[1] mod m) * (x[2] mod m) * (x[3] mod m) mod m;
        WriteLn(fo, res);
      end;
  finally
    CloseFile(fi); CloseFile(fo);
  end;
end.

彼らは、あなたがこの記事を読んで、推奨される解決策を考えたいです, その後、あなたの答えを参照してから視聴コードが複数のサイトに配置する必要があり、私もあなたが再び推奨している即時の答えを読みたくないと考えています.

ページ 4 いくつかの事柄について話すと、私たちのすべての式に展開されます: