import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
/**
* Created by stawicad on 2016-11-22.
*/
public class jed {
public static void main(String[] args) {
Map<Integer, String> cache = new HashMap<>();
String[] samples = {null, "1", "1+1", "1+1+1", "1+1+1+1", "1+1+1+1+1", "1+1+1+1+1+1", "1+1+1+1+1+1+1"};
Scanner sc = new Scanner(System.in);
int t = sc.nextInt();
for (int i = 0; i < t; i++) {
String no = toString(sc.nextInt(), cache, samples);
System.out.println(count(no) > 100 ? "NIE" : no);
}
}
private static int count(final String no) {
int answer = 0;
for (char c : no.toCharArray()) {
if(c == '1') answer++;
}
return answer;
}
private static String toString(int k, final Map<Integer, String> cache, final String[] samples) {
if(k < samples.length) return samples[k];
if(cache.containsKey(k)) return cache.get(k);
String answer = null;
for (int i = 2; i * i <= k; i++) {
if(k % i == 0) {
String p = "("
+ toString(i, cache, samples)
+ ")*("
+ toString(k / i, cache, samples)
+ ")";
if(answer == null || answer.length() > p.length()) answer = p;
}
}
if(answer == null) answer = toString(k - 1, cache, samples) +"+1";
cache.put(k, answer);
return answer;
}
}
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 | import java.util.HashMap; import java.util.Map; import java.util.Scanner; /** * Created by stawicad on 2016-11-22. */ public class jed { public static void main(String[] args) { Map<Integer, String> cache = new HashMap<>(); String[] samples = {null, "1", "1+1", "1+1+1", "1+1+1+1", "1+1+1+1+1", "1+1+1+1+1+1", "1+1+1+1+1+1+1"}; Scanner sc = new Scanner(System.in); int t = sc.nextInt(); for (int i = 0; i < t; i++) { String no = toString(sc.nextInt(), cache, samples); System.out.println(count(no) > 100 ? "NIE" : no); } } private static int count(final String no) { int answer = 0; for (char c : no.toCharArray()) { if(c == '1') answer++; } return answer; } private static String toString(int k, final Map<Integer, String> cache, final String[] samples) { if(k < samples.length) return samples[k]; if(cache.containsKey(k)) return cache.get(k); String answer = null; for (int i = 2; i * i <= k; i++) { if(k % i == 0) { String p = "(" + toString(i, cache, samples) + ")*(" + toString(k / i, cache, samples) + ")"; if(answer == null || answer.length() > p.length()) answer = p; } } if(answer == null) answer = toString(k - 1, cache, samples) +"+1"; cache.put(k, answer); return answer; } } |
English