Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private void solve() {
- int n = in.readInt();
- int[] result = new int[n];
- Arrays.fill(result, -1);
- result[0] = 0;
- int[] dels = new int[200];
- int dels_count = 0;
- for(int i = 1; i <= Math.sqrt(n); i++) {
- if(n % i == 0) {
- int a = n / i;
- if(a != n)
- dels[dels_count++] = a;
- if(n % a == 0) {
- int b = n / a;
- if(b != n)
- dels[dels_count++] = b;
- }
- }
- }
- for(int i = 1; i < n; i++) {
- int current = -1;
- boolean[] flags = new boolean[26];
- for(int k = 0; k < dels_count; k++) {
- int del = dels[k];
- int index = i - del;
- if(index >= 0) {
- int a = result[index];
- if(a >= 0) {
- flags[a] = true;
- }
- }
- int index2 = (i + del) % n;
- int b = result[index2];
- if(b >= 0) {
- flags[b] = true;
- }
- }
- for(int j = 0; j < 26; j++) {
- if(!flags[j]) {
- current = j;
- break;
- }
- }
- if(current == -1) {
- out.println("Impossible");
- return;
- }
- result[i] = current;
- }
- for(int i = 0; i < n; i++) {
- char c = (char) ((int) 'a' + result[i]);
- out.print(c);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement