Advertisement
Guest User

Untitled

a guest
Apr 24th, 2011
319
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.31 KB | None | 0 0
  1.         private void solve() {
  2.             int n = in.readInt();
  3.            
  4.            
  5.             int[] result = new int[n];
  6.             Arrays.fill(result, -1);
  7.             result[0] = 0;
  8.            
  9.             int[] dels = new int[200];
  10.             int dels_count = 0;
  11.            
  12.             for(int i = 1; i <= Math.sqrt(n); i++) {
  13.                 if(n % i == 0) {
  14.                     int a = n / i;
  15.                    
  16.                     if(a != n)
  17.                      dels[dels_count++] = a;
  18.                    
  19.                     if(n % a == 0) {
  20.                         int b = n / a;
  21.                        
  22.                         if(b != n)
  23.                             dels[dels_count++] = b;
  24.                     }
  25.                 }
  26.             }
  27.            
  28.             for(int i = 1; i < n; i++) {
  29.                 int current = -1;
  30.                
  31.                 boolean[] flags = new boolean[26];
  32.                
  33.                 for(int k = 0; k < dels_count; k++) {
  34.                     int del = dels[k];
  35.                    
  36.                     int index = i - del;
  37.                    
  38.                     if(index >= 0) {
  39.                         int a = result[index];
  40.                        
  41.                         if(a >= 0) {
  42.                             flags[a] = true;
  43.                         }
  44.                     }
  45.                    
  46.                     int index2 = (i + del) % n;
  47.                     int b = result[index2];
  48.                    
  49.                     if(b >= 0) {
  50.                         flags[b] = true;
  51.                     }
  52.                 }
  53.                
  54.                 for(int j = 0; j < 26; j++) {
  55.                     if(!flags[j]) {
  56.                         current = j;
  57.                         break;
  58.                     }
  59.                 }
  60.                
  61.                 if(current == -1) {
  62.                     out.println("Impossible");
  63.                     return;
  64.                 }
  65.                
  66.                 result[i] = current;
  67.                
  68.             }
  69.            
  70.             for(int i = 0; i < n; i++) {
  71.                 char c = (char) ((int) 'a' + result[i]);
  72.                 out.print(c);
  73.             }
  74.            
  75.            
  76.            
  77.            
  78.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement