#include <iostream> using namespace std; int main() { string a; while (cin >> a ) { int n=a.length(); char x[n+3][n+3]; for(int i=1;i<=n+2;i++) { for(int j=1;j<=n+2;j++) { x[i][j]=' '; } } /* U的规律:n1 = n3 = max { k| k <= n2 for all 3 <= n2 <= N } with n1 + n2 + n3 - 2 = N. 左右竖排字符个数永远小于等于横排的 横排最少和竖排个数相等,最多比竖排多两个 */ int m;//行数 int p;//列数 //横排和竖排个数相等 if((n+2)%3==0) { m=(n+2)/3; p=m; for(int i=1;i<=m;i++) { x[i][1]=a[i-1]; x[i][p]=a[n-i]; } for(int i=1;i<=p-2;i++) { x[m][1+i]=a[m-1+i]; } for(int i=1;i<=m;i++) { for(int j=1;j<=p;j++) { cout<<x[i][j]; } cout<<endl; } } else if((n+1)%3==0) { //横排比竖排多一个 m=(n+1)/3; p=m+1; for(int i=1;i<=m;i++) { x[i][1]=a[i-1]; x[i][p]=a[n-i]; } for(int i=1;i<=p-2;i++) { x[m][1+i]=a[m-1+i]; } for(int i=1;i<=m;i++) { for(int j=1;j<=p;j++) { cout<<x[i][j]; } cout<<endl; } } else { //横排比竖排多两个 m=n/3; p=m+2; for(int i=1;i<=m;i++) { x[i][1]=a[i-1]; x[i][p]=a[n-i]; } for(int i=1;i<=p-2;i++) { x[m][1+i]=a[m-1+i]; } for(int i=1;i<=m;i++) { for(int j=1;j<=p;j++) { cout<<x[i][j]; } cout<<endl; } } // //用字符串长度奇偶数来区别要分6类,方法很不好,没找到本质规律,注意题目n1n2n3限制条件 // if(n%2==0) // { // if((n+2)%3==0) // { // m=(n+2)/3;//是行数也是列数 // for(int i=1;i<=m;i++) // { // x[i][1]=a[i-1]; // x[i][m]=a[n-i]; // } // for(int i=1;i<=m-2;i++) // { // x[m][1+i]=a[m-1+i]; // } // for(int i=1;i<=m;i++) // { // for(int j=1;j<=m;j++) // { // cout<<x[i][j]; // } // cout<<endl; // } // } // else // { // m=n/3;//行数 // int c=m+2;//列数 // for(int i=1;i<=m;i++) // { // x[i][1]=a[i-1]; // x[i][c]=a[n-i]; // } // for(int i=1;i<=c-2;i++) // { // x[m][i+1]=a[m-1+i]; // } // for(int i=1;i<=m;i++) // { // for(int j=1;j<=c;j++) // { // cout<<x[i][j]; // } // cout<<endl; // } // } // } // else // { // if((n+1)%3==0) // { // m=(n+1)/3;//是行数 // int p=m+1;//是列数 // for(int i=1;i<=m;i++) // { // x[i][1]=a[i-1]; // x[i][p]=a[n-i]; // } // for(int i=1;i<=p-2;i++) // { // x[m][1+i]=a[m-1+i]; // } // for(int i=1;i<=m;i++) // { // for(int j=1;j<=p;j++) // { // cout<<x[i][j]; // } // cout<<endl; // } // } // else // { // m=(n+2)/3; // for(int i=1;i<=m;i++) // { // x[i][1]=a[i-1]; // x[i][m]=a[n-i]; // } // for(int i=1;i<=m-2;i++) // { // x[m][1+i]=a[m-1+i]; // } // for(int i=1;i<=m;i++) // { // for(int j=1;j<=m;j++) // { // cout<<x[i][j]; // } // cout<<endl; // } // } // } } } // 64 位输出请用 printf("%lld")