// // File: encipher.cc // Author: cteam044 // // Created on October 22, 2011, 2:03 PM // #include #include #include #include #include using namespace std; char in[10002]; char out[10002]; int step; int lineLen; void compute(){ if ( lineLen <= step){ printf("%s\n", in);return;} int big, small = lineLen/step; int smallCount, bigCount = lineLen - (lineLen/step) * step; if (bigCount == 0) { bigCount = step; smallCount = 0; big = lineLen/step;} else { smallCount = step - bigCount; big = small + 1;} int * subStarts = new int[step + 1]; int increment = 0; for (int i = 0; i < bigCount; i++) subStarts[increment++] = i * (big); for (int i = 0; i < smallCount + 1; i++) subStarts[increment++] = (bigCount * (big) ) + i * small; int pos = 0; for(int i = 0; i < big; i++) { for(int box = 0; box < step; box++) { if (i + subStarts[box] == subStarts[box + 1] ) continue; out[pos++] = in[subStarts[box] + i]; } } out[lineLen] = 0; printf("%s\n", out); } int main(int argc, char** argv) { while (1){ scanf("%d", &step); while(getchar() != '\n'); if ( step == 0) break; gets(in); //in[strlen(in) - 1] = 0; int pos = 0; lineLen = strlen(in); for (int i = 0; i < lineLen; i ++) { if (in[i] == ' ') {continue;} else in[pos++] = toupper(in[i]); } in[pos] = 0; //printf("%s\n", in); lineLen = strlen(in); compute(); } return (0); }