leminhkt

71

Jul 30th, 2020 (edited)
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 0.84 KB | None | 0 0
  1. var n: int64;
  2.     t, i: longint;
  3.     fib: array[1..75] of int64;
  4.  
  5. function exists(x: int64): boolean;
  6. var l, r, mid: longint;
  7. begin
  8.     exists := false;
  9.     l := 2; r := 75;
  10.     while l <= r do
  11.     begin
  12.         mid := (l + r) div 2;
  13.         if fib[mid] = x then
  14.         begin
  15.             exists := true;
  16.             break;
  17.         end;
  18.         if fib[mid] > x then
  19.             r := mid - 1
  20.         else
  21.             l := mid + 1;
  22.     end;
  23. end;
  24.  
  25. function check(x: int64): boolean;
  26. var j: longint;
  27. begin
  28.     check := false;
  29.     for j := 2 to 75 do
  30.         if (x mod fib[j] = 0) and (x div fib[j] <> fib[j]) and (exists(x div fib[j])) then
  31.         begin
  32.             check := true;
  33.             break;
  34.         end;
  35. end;
  36.  
  37. begin
  38.     fib[1] := 1; fib[2] := 1;
  39.     for i := 3 to 75 do
  40.         fib[i] := fib[i - 2] + fib[i - 1];
  41.     read(t);
  42.     while t <> 0 do
  43.     begin
  44.         read(n);
  45.         if (n = 1) or (check(n)) then
  46.             writeln('YES')
  47.         else
  48.             writeln('NO');
  49.         dec(t);
  50.     end;
  51. end.
Add Comment
Please, Sign In to add comment