main
黄海 1 year ago
parent 46508d07c4
commit b3aff5ce01

@ -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 83
(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;
}
Loading…
Cancel
Save