class Main{
{
System.
out.
println(cifra
(3,
"INVIO RINFORZI DOMANI")); System.
out.
println(decifra
(3,
"IIIOIMI\t\nNONRDAVRFZON")); }
int c = key;
messaggio = messaggio.replaceAll("\\s", "");
int r = messaggio.length()/c;
if (messaggio.length()%c != 0){
r++;
}
int pos = 0;
char[][] M = new char [r][c];
for (int i = 0; i < r; i++) {
for (int j = 0; j < c; j++) {
if (pos == messaggio.length())
break;
M[i][j] = messaggio.charAt(pos);
pos++;
}
}
for (int i = 0; i < c; i++) {
for (int j = 0; j < r; j++) {
if(M[j][i] != 0)
output += M[j][i];
}
}
return output;
}
int c = key;
messaggio = messaggio.replaceAll("\\s", "");
int r = messaggio.length()/c;
int eccesso = messaggio.length()%c;
if (eccesso != 0){
r++;
}
int pos = 0;
char[][] M = new char [r][c];
for (int j = 0; j < c; j++) {
for (int i = 0; i < r; i++) {
if (pos == messaggio.length())
break;
if((eccesso != 0) && (i == r-1) && (j >= eccesso)){
continue;
}
M[i][j] = messaggio.charAt(pos);
pos++;
}
}
for (int i = 0; i < r; i++) {
for (int j = 0; j < c; j++) {
if(M[i][j]!= 0)
output += M[i][j];
}
}
return output;
}
}
Y2xhc3MgTWFpbnsKICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgogICAgewogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihjaWZyYSgzLCAiSU5WSU8gUklORk9SWkkgRE9NQU5JIikpOwogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihkZWNpZnJhKDMsICJJSUlPSU1JXHRcbk5PTlJEQVZSRlpPTiIpKTsKICAgIH0KICAgIAogICAgcHVibGljIHN0YXRpYyBTdHJpbmcgY2lmcmEoaW50IGtleSwgU3RyaW5nIG1lc3NhZ2dpbykgeyAgICAgICAgCiAgICAgICAgaW50IGMgPSBrZXk7CiAgICAgICAgU3RyaW5nIG91dHB1dCA9ICIiOwoKCgoKICAgICAgICBtZXNzYWdnaW8gPSBtZXNzYWdnaW8ucmVwbGFjZUFsbCgiXFxzIiwgIiIpOwoKCgoKICAgICAgICBpbnQgciA9IG1lc3NhZ2dpby5sZW5ndGgoKS9jOwogICAgICAgIGlmIChtZXNzYWdnaW8ubGVuZ3RoKCklYyAhPSAwKXsKICAgICAgICAgICAgcisrOwogICAgICAgIH0KICAgICAgICBpbnQgcG9zID0gMDsKICAgICAKICAgICAgICBjaGFyW11bXSBNID0gbmV3IGNoYXIgW3JdW2NdOwogICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHI7IGkrKykgewogICAgICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBjOyBqKyspIHsKICAgICAgICAgICAgICAgICAgICBpZiAocG9zID09IG1lc3NhZ2dpby5sZW5ndGgoKSkKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBNW2ldW2pdID0gbWVzc2FnZ2lvLmNoYXJBdChwb3MpOwogICAgICAgICAgICAgICAgICAgIHBvcysrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGM7IGkrKykgewogICAgICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCByOyBqKyspIHsKICAgICAgICAgICAgICAgIAlpZihNW2pdW2ldICE9IDApCiAgICAgICAgICAgICAgICAgICAgCW91dHB1dCArPSBNW2pdW2ldOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgcmV0dXJuIG91dHB1dDsKICAgIH0KICAgIAogICAgcHVibGljIHN0YXRpYyBTdHJpbmcgZGVjaWZyYShpbnQga2V5LCBTdHJpbmcgbWVzc2FnZ2lvKSB7ICAgICAgICAKICAgICAgICBpbnQgYyA9IGtleTsKICAgICAgICBTdHJpbmcgb3V0cHV0ID0gIiI7CgoKCgogICAgICAgIG1lc3NhZ2dpbyA9IG1lc3NhZ2dpby5yZXBsYWNlQWxsKCJcXHMiLCAiIik7CgoKCgogICAgICAgIGludCByID0gbWVzc2FnZ2lvLmxlbmd0aCgpL2M7CiAgICAgICAgaW50IGVjY2Vzc28gPSBtZXNzYWdnaW8ubGVuZ3RoKCklYzsKICAgICAgICBpZiAoZWNjZXNzbyAhPSAwKXsKICAgICAgICAgICAgcisrOwogICAgICAgIH0KICAgICAgICBpbnQgcG9zID0gMDsKICAgICAKICAgICAgICBjaGFyW11bXSBNID0gbmV3IGNoYXIgW3JdW2NdOwogICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IGM7IGorKykgewogICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCByOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICBpZiAocG9zID09IG1lc3NhZ2dpby5sZW5ndGgoKSkKICAgICAgICAgICAgICAgICAgICAJYnJlYWs7CiAgICAgICAgICAgICAgICAJaWYoKGVjY2Vzc28gIT0gMCkgJiYgKGkgPT0gci0xKSAmJiAoaiA+PSBlY2Nlc3NvKSl7CiAgICAgICAgICAgICAgICAgICAgCWNvbnRpbnVlOwogICAgICAgICAgICAgICAgCX0KICAgICAgICAgICAgICAgIAlNW2ldW2pdID0gbWVzc2FnZ2lvLmNoYXJBdChwb3MpOwogICAgICAgICAgICAgICAgICAgIHBvcysrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHI7IGkrKykgewogICAgICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBjOyBqKyspIHsKICAgICAgICAgICAgICAgIAlpZihNW2ldW2pdIT0gMCkKICAgICAgICAgICAgICAgICAgICAJb3V0cHV0ICs9IE1baV1bal07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICByZXR1cm4gb3V0cHV0OwogICAgfQp9