Advertisement
Guest User

Untitled

a guest
Mar 12th, 2019
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 1.02 KB | None | 0 0
  1. program ProjectB_2;
  2.  
  3. {$APPTYPE CONSOLE}
  4.  
  5. var
  6.   k, n, m, q : int64;
  7.   resn, resm : array[1..10000] of int64;
  8.   w, ck : integer;
  9. begin
  10.   readln(k);
  11.   ck := k;
  12.   q := 0;
  13.   m := 1;
  14.   if (k = 2) then begin
  15.     writeln(0);
  16.     halt(0);
  17.   end;
  18.   while (m <= round(sqrt(ck))) do begin
  19.     if ((k + m) mod (2 * m + 1) = 0) then begin
  20.       n := (k + m) div (2 * m + 1);
  21.       if (n > m) and (2 * n * m + n - m = k) then begin
  22.         inc(q);
  23.         resm[q] := (k + m) div (2 * m + 1);
  24.         resn[q] := m;
  25.       end;
  26.     end;
  27.     inc(m);
  28.   end;
  29.   n := 1;
  30.   while (n <= round(sqrt(ck))) do begin
  31.     if ((k + n - 1) mod (2 * n + 1) = 0) and ((k + n - 1) div (2 * n + 1) >= n) then begin
  32.       m := (k + n - 1) div (2 * n + 1);
  33.       if (n <= m) and (2 * n * m - n + m + 1 = k) then begin
  34.         inc(q);
  35.         resn[q] := (k + n - 1) div (2 * n + 1);
  36.         resm[q] := n;
  37.       end;
  38.     end;
  39.     inc(n);
  40.   end;
  41.   writeln(q);
  42.   for w := 1 to q do
  43.     writeln(resn[w], ' ', resm[w]);
  44.   readln;
  45.   readln;
  46. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement