1.

/**
* FWP, Ausgewählte Probleme aus dem ACM Programming Contest, SS11
* Problem: 11716 Digital Fortress
* Link: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=117&page=show_problem&problem=2763
*
* @author Weigl Joseph
* @author Müller Thomas
* @version 1.0, 03/31/2011
*
* Method : Ad-Hoc
* Status : Accepted
* Runtime: 0.384
*/

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;


public class Main {

public static void main(String... args) throws IOException{
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
int lines = Integer.parseInt(reader.readLine());
for(int l = 1; l <= lines; l++){
char[] input = reader.readLine().toCharArray();
int n = (int) Math.sqrt(input.length);
if(n*n == input.length){
StringBuilder result = new StringBuilder();
int d = 0;
String[] decrypt = new String[n];
for (int i = 0; i < input.length; i++) {
d = i%n;
if(decrypt[d] == null)
decrypt[d] = new String();
decrypt[d] = decrypt[d] + input[i];
}
for(String s : decrypt){
result.append(s);
}
System.out.println(result.toString());
}
else
System.out.println("INVALID");
}
}

}

2.

import java.io.*;
import java.util.*;


/**
* FWP, Ausgewählte Probleme aus dem ACM Programming Contest, SS11
* Problem: 11716 Digital Fortress
* Link: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=117&page=show_problem&problem=2763
*
* @author Bastian Hoecker
* @author Philipp Hauck Thalheim
* @author YYY
* @version 1.0, 04/01/2011
*
* Method : Ad-Hoc
* Status : Accepted
* Runtime: 0.100
*/


public class DigitalFortress11716 {

/**
* @param args
*/
public static void main(String[] args) throws IOException {

BufferedReader reader = new BufferedReader(new InputStreamReader(
System.in));
int start = Integer.parseInt(reader.readLine());

for (int i = 0; i < start; i++) {
String s = reader.readLine();
double t = Math.sqrt(s.length());
int f = (int) t;
int count = 0;
int count2 = 0;

if (t - f == 0) {
char code[] = new char[s.length()];
for (int j = 0; j < s.length(); j++) {
if (count2 != s.length()) {
if (j + f >= s.length()) {
code[count2] = s.charAt(j);

j = count;
count++;

} else {
code[count2] = s.charAt(j);
j = j + f - 1;
}

count2++;
}
}
System.out.println(new String(code));
} else
System.out.println("INVALID");
}

}

}


------------------
1.


import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;

/**
* FWP, Ausgewählte Probleme aus dem ACM Programming Contest, SS11
* Problem: 11716 Digital Fortress
* Link:
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=117&page=show_problem&problem=2763
*
* @author Rolf Schirm
* @version 1.0, 03/23/2011
*
* Method : Ad-Hoc
* Status : Accepted
* Runtime: 0.284
*/
public class Main {
public static void main(String... args) throws Exception {
BufferedReader scan = new BufferedReader(new InputStreamReader(System.in));

int[] quadNumbers = new int[] {0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100,
121, 144, 169, 196, 225, 256, 289, 324, 361, 400, 441, 484, 529,
576, 625, 676, 729, 784, 841, 900, 961, 1024, 1089, 1156, 1225,
1296, 1369, 1444, 1521, 1600, 1681, 1764, 1849, 1936, 2025, 2116,
2209, 2304, 2401, 2500, 2601, 2704, 2809, 2916, 3025, 3136, 3249,
3364, 3481, 3600, 3721, 3844, 3969, 4096, 4225, 4356, 4489, 4624,
4761, 4900, 5041, 5184, 5329, 5476, 5625, 5776, 5929, 6084, 6241,
6400, 6561, 6724, 6889, 7056, 7225, 7396, 7569, 7744, 7921, 8100,
8281, 8464, 8649, 8836, 9025, 9216, 9409, 9604, 9801, 10000};

int count = Integer.parseInt(scan.readLine());

while(count > 0) {
count--;

String line = scan.readLine();
int length = line.length();
int index = Arrays.binarySearch(quadNumbers, length);

if(index < 0) {
System.out.println("INVALID");
} else {
StringBuilder result = new StringBuilder();
for(int i = 0; i < index; i++) {
for(int n = i; n < length; n += index) {
result.append(line.charAt(n));
}
}
System.out.println(result);
}
}
}
}





.------------------------------------------------------------------------

1.
/**
* FWP, Ausgewählte Probleme aus dem ACM Programming Contest, SS10
* Problem: 11716 Digital Fortress
*
* @author Robert Reichart
*
* Status : Accepted
* Runtime: 0.432
*/

import java.util.*;
class Main{
public static void main(String... args){
Scanner in = new Scanner(System.in);
int cases=in.nextInt();

while(in.hasNext()){

String line = in.nextLine();
if (line.isEmpty()){continue;}

if (Math.sqrt(line.length())%1!=0){
System.out.println("INVALID");
}else{
SpecialPrintArray(CharInSQRTArray(line));
}
}
}

static char[][] CharInSQRTArray(String line){
int sqrt = (int)Math.sqrt(line.length());
char[][] letters = new char[sqrt][sqrt];
for (int i=0;i<sqrt;i++){
for (int j=0;j<sqrt;j++){
letters[i][j]=line.charAt(i*sqrt+j);
}
}
return letters;
}

static void SpecialPrintArray(char[][] letters){
StringBuilder out= new StringBuilder("");
for (int i=0;i<letters.length;i++){
for (int j=0;j<letters.length;j++){
out.append(letters[j][i]);
}
}
System.out.println(out);
}
}