|
|
|
@ -0,0 +1,44 @@
|
|
|
|
|
#include <bits/stdc++.h>
|
|
|
|
|
using namespace std;
|
|
|
|
|
/*
|
|
|
|
|
测试样例:
|
|
|
|
|
abcdefgh
|
|
|
|
|
|
|
|
|
|
输出:
|
|
|
|
|
aebfcgdh
|
|
|
|
|
|
|
|
|
|
思考:
|
|
|
|
|
行数:n, 列数:m 需要满足 m>=n
|
|
|
|
|
(1) 1行, m=length(abcdefgh)=8 n=1 满足m>=n
|
|
|
|
|
(2) 2行, m=length(abcdefgh)/2=8/2=4 n=2 满足m>=n
|
|
|
|
|
(3) 3行, 8不能被3整除,跳过
|
|
|
|
|
(4) 4行, m=8/4=2, n=4 m<n break
|
|
|
|
|
*/
|
|
|
|
|
const int N = 210;
|
|
|
|
|
char a[N][N];
|
|
|
|
|
|
|
|
|
|
int main() {
|
|
|
|
|
string s;
|
|
|
|
|
cin >> s; // 生成一个n行m列的矩阵
|
|
|
|
|
// 1、整明白到底是几行几列
|
|
|
|
|
int len = s.size();
|
|
|
|
|
int n = 0; // 最后是几行
|
|
|
|
|
for (int i = 1;; i++) {
|
|
|
|
|
if (len % i == 0 && len / i >= i) n = i;
|
|
|
|
|
if (len / i < i) break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int m = len / n; // 每行多少列
|
|
|
|
|
|
|
|
|
|
// 2、做一个二维矩阵存进去
|
|
|
|
|
for (int i = 0; i < n; i++) // 行
|
|
|
|
|
for (int j = 0; j < m; j++) // 列
|
|
|
|
|
a[i][j] = s[(i)*m + j];
|
|
|
|
|
|
|
|
|
|
// 3、从第一列开始,逐列从上下到输出矩阵中的字符
|
|
|
|
|
for (int j = 0; j < m; j++)
|
|
|
|
|
for (int i = 0; i < n; i++)
|
|
|
|
|
cout << a[i][j];
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
}
|