Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var n: int64;
- t, i: longint;
- fib: array[1..75] of int64;
- function exists(x: int64): boolean;
- var l, r, mid: longint;
- begin
- exists := false;
- l := 2; r := 75;
- while l <= r do
- begin
- mid := (l + r) div 2;
- if fib[mid] = x then
- begin
- exists := true;
- break;
- end;
- if fib[mid] > x then
- r := mid - 1
- else
- l := mid + 1;
- end;
- end;
- function check(x: int64): boolean;
- var j: longint;
- begin
- check := false;
- for j := 2 to 75 do
- if (x mod fib[j] = 0) and (x div fib[j] <> fib[j]) and (exists(x div fib[j])) then
- begin
- check := true;
- break;
- end;
- end;
- begin
- fib[1] := 1; fib[2] := 1;
- for i := 3 to 75 do
- fib[i] := fib[i - 2] + fib[i - 1];
- read(t);
- while t <> 0 do
- begin
- read(n);
- if (n = 1) or (check(n)) then
- writeln('YES')
- else
- writeln('NO');
- dec(t);
- end;
- end.
Add Comment
Please, Sign In to add comment