1 /* 2 對於題目多讀幾遍,而後再關鍵字排序的時候,把對應的數組序號也排序, 3 EYDE 4 MBLR 5 THAN 6 MEKT 7 ETOE 8 EOTH 9 10 MEETME 11 BYTHEO 12 LDOAKT 13 REENTH 14 15 16 */ 17 #include<iostream> 18 #include<string> 19 #include<algorithm> 20 using namespace std; 21 int main(){ 22 int n; 23 string keyword; 24 while(cin>>keyword&&keyword!="THEEND"){ 25 string s; 26 cin>>s; 27 int len = keyword.length(); 28 int slen = s.length(); 29 while(slen%len!=0){ 30 s = s + "X"; 31 slen = s.length(); 32 } 33 slen = s.length(); 34 int row = slen / len; 35 int column = len; 36 int base = 0; 37 char a[row][column]; 38 char b[row][column]; 39 for(int i=0;i<column;i++){ 40 for(int j=0;j<row;j++){ 41 a[j][i]=s[base]; 42 base ++; 43 } 44 } 45 int y[len]; 46 char s1[len]; 47 for(int i=0;i<len;i++){ 48 s1[i] = keyword[i]; 49 } 50 for(int t=0;t<len;t++){ 51 y[t] = t; 52 } 53 for(int i=0;i<len;i++){ 54 for(int j=0;j<len-i-1;j++){ 55 if(s1[j] > s1[j+1]){ 56 swap(s1[j],s1[j+1]); 57 swap(y[j],y[j+1]); 58 } 59 } 60 } 61 62 for(int w=0;w<column;w++){ 63 for(int r=0;r<row;r++){ 64 b[r][y[w]] = a[r][w]; 65 } 66 } 67 68 for(int w=0;w<row;w++){ 69 for(int r=0;r<column;r++){ 70 cout<<b[w][r]; 71 } 72 } 73 74 75 76 cout<<endl; 77 78 } 79 return 0; 80 }