/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class ilo {
public List<Long> fib = new ArrayList<Long>();
public ilo() {
fib.add(0L);
}
private void fillMax(Long max) {
Long l = 2l;
while (getLastFibValue() <= max) {
getFib(l++);
}
}
public String canI(Long val) {
fillMax(val);
List<Long> tmp = getSubstrFibArray(val);
for (Integer i = 0; i < tmp.size() + 1; i++) {
for (Integer j = i; j < tmp.size() + 1; j++) {
if (fib.get(j) * fib.get(i) == val) {
return "TAK";
}
}
}
return "NIE";
}
private Long getFib(Long number) {
Long value;
if (number < 2L) {
value = number;
} else if (!fib.isEmpty() && fib.size() > Integer.valueOf(number.toString())) {
return fib.get(Integer.valueOf(number.toString()));
} else {
value = getFib(number - 2L) + getFib(number - 1L);
fib.add(value);
}
return value;
}
public Long getLastFibValue() {
return fib.get(fib.size()-1);
}
public Integer getLastFibPosition() {
return fib.size() - 1;
}
//
//
private List<Long> getSubstrFibArray(Long maxValue) {
return fib.subList(0, getFibPosition(maxValue));
}
//
private Integer getFibPosition(Long pos) {
for (Integer i = 0; i <=fib.size(); i++) {
if (fib.get(i) >= pos) {
return i;
}
}
return null;
}
public static void main(String[] args) {
Scanner key = new Scanner(System.in);
Integer ile = key.nextInt();
List<Long> zad = new ArrayList<Long>();
while((ile--)!=0) {
zad.add(key.nextLong());
}
ilo f = new ilo();
for(Long z : zad) {
System.out.println(f.canI(z));
}
}
}
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 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 | /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class ilo { public List<Long> fib = new ArrayList<Long>(); public ilo() { fib.add(0L); } private void fillMax(Long max) { Long l = 2l; while (getLastFibValue() <= max) { getFib(l++); } } public String canI(Long val) { fillMax(val); List<Long> tmp = getSubstrFibArray(val); for (Integer i = 0; i < tmp.size() + 1; i++) { for (Integer j = i; j < tmp.size() + 1; j++) { if (fib.get(j) * fib.get(i) == val) { return "TAK"; } } } return "NIE"; } private Long getFib(Long number) { Long value; if (number < 2L) { value = number; } else if (!fib.isEmpty() && fib.size() > Integer.valueOf(number.toString())) { return fib.get(Integer.valueOf(number.toString())); } else { value = getFib(number - 2L) + getFib(number - 1L); fib.add(value); } return value; } public Long getLastFibValue() { return fib.get(fib.size()-1); } public Integer getLastFibPosition() { return fib.size() - 1; } // // private List<Long> getSubstrFibArray(Long maxValue) { return fib.subList(0, getFibPosition(maxValue)); } // private Integer getFibPosition(Long pos) { for (Integer i = 0; i <=fib.size(); i++) { if (fib.get(i) >= pos) { return i; } } return null; } public static void main(String[] args) { Scanner key = new Scanner(System.in); Integer ile = key.nextInt(); List<Long> zad = new ArrayList<Long>(); while((ile--)!=0) { zad.add(key.nextLong()); } ilo f = new ilo(); for(Long z : zad) { System.out.println(f.canI(z)); } } } |
English