/* * 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; } } } } |