/*
* Copyright (c) 2014 SmartRecruiters Inc. All Rights Reserved.
*/
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Scanner;
import java.util.Set;
/**
* Date: 06.05.2014
* Time: 22:59
*
* @Author Kamil Sobol
*/
public class ilo {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int samples = scanner.nextInt();
List<Integer> fib = new ArrayList<Integer>();
Set<Integer> fibSet = new HashSet<Integer>();
fib.add(1);
fib.add(1);
fibSet.add(1);
fibSet.add(1);
for (int i = 0; i < samples; i++) {
int number = scanner.nextInt();
if (number == 0 || number == 1) {
System.out.println("TAK");
} else {
fillCache(fib, fibSet, number);
int sqrt = (int) Math.sqrt(number);
boolean found = false;
for (int n : fib) {
if (n > sqrt) break;
if (number % n != 0) continue;
int k = number / n;
if (fibSet.contains(k)) {
found = true;
break;
}
}
if (found) {
System.out.println("TAK");
} else {
System.out.println("NIE");
}
}
}
}
private static void fillCache(List<Integer> fib, Set<Integer> fibSet, int number) {
int current = fib.get(fib.size() - 1);
if (current < number) {
int prev = fib.get(fib.size() - 2);
while (current < number) {
int next = current + prev;
fib.add(next);
fibSet.add(next);
prev = current;
current = next;
}
}
}
}
1 2 3 4 5 6 7 8 9 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 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | /* * Copyright (c) 2014 SmartRecruiters Inc. All Rights Reserved. */ import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Scanner; import java.util.Set; /** * Date: 06.05.2014 * Time: 22:59 * * @Author Kamil Sobol */ public class ilo { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int samples = scanner.nextInt(); List<Integer> fib = new ArrayList<Integer>(); Set<Integer> fibSet = new HashSet<Integer>(); fib.add(1); fib.add(1); fibSet.add(1); fibSet.add(1); for (int i = 0; i < samples; i++) { int number = scanner.nextInt(); if (number == 0 || number == 1) { System.out.println("TAK"); } else { fillCache(fib, fibSet, number); int sqrt = (int) Math.sqrt(number); boolean found = false; for (int n : fib) { if (n > sqrt) break; if (number % n != 0) continue; int k = number / n; if (fibSet.contains(k)) { found = true; break; } } if (found) { System.out.println("TAK"); } else { System.out.println("NIE"); } } } } private static void fillCache(List<Integer> fib, Set<Integer> fibSet, int number) { int current = fib.get(fib.size() - 1); if (current < number) { int prev = fib.get(fib.size() - 2); while (current < number) { int next = current + prev; fib.add(next); fibSet.add(next); prev = current; current = next; } } } } |
English