[Algorithm] Count the squares

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
{$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.

Do mình muốn các bạn đọc đề bài và nghĩ cách giải, sau đó mới xem lời giải của mình và tiếp đó là xem code nên có đặt tại nhiều trang và mình cũng tin các bạn sẽ không muốn đọc đề mà lại có lời giải ngay.

Page 4 sẽ nói về một số điều và mở rộng về công thức trong bài của chúng ta: