import java.util.Scanner;
/**
* Created by stawicad on 2016-11-15.
*/
public class slo {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println(word(sc.nextInt(), sc.nextLong()));
}
private static String word(final int n, long k) {
final int[][] states = {
{1, 2},
{0, 2},
{0, 1},
{0, 1, 2}
};
long last = 3;
StringBuilder answer = new StringBuilder();
char prev = 'd';
for (int i = 1; i < n & k > 0; i++) {
if(k == k % (last / 3)) {
answer.append(prev = character(prev, --k, last, states));
}
else {
last = last * 2 + 3;
}
}
if(last < k) return "NIE";
while (k > 0) {
answer.append(prev = character(prev, --k, last, states));
k = k % (last / 3);
last = (last - 3) / 2;
}
return answer.toString();
}
private static char character(final int prev, final long k, final long last, final int[][] states) {
return (char) ('a' + states[prev - 'a'][(int) (k / (last / 3))]);
}
}
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 | import java.util.Scanner; /** * Created by stawicad on 2016-11-15. */ public class slo { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println(word(sc.nextInt(), sc.nextLong())); } private static String word(final int n, long k) { final int[][] states = { {1, 2}, {0, 2}, {0, 1}, {0, 1, 2} }; long last = 3; StringBuilder answer = new StringBuilder(); char prev = 'd'; for (int i = 1; i < n & k > 0; i++) { if(k == k % (last / 3)) { answer.append(prev = character(prev, --k, last, states)); } else { last = last * 2 + 3; } } if(last < k) return "NIE"; while (k > 0) { answer.append(prev = character(prev, --k, last, states)); k = k % (last / 3); last = (last - 3) / 2; } return answer.toString(); } private static char character(final int prev, final long k, final long last, final int[][] states) { return (char) ('a' + states[prev - 'a'][(int) (k / (last / 3))]); } } |
English