L1-039 古风排版(string)

中国的古人写文字,是从右向左竖向排版的。本题就请你编写程序,把一段文字按古风排版。

输入格式:

输入在第一行给出一个正整数 $N(<100)$,是每一列的字符数。第二行给出一个长度不超过1000的非空字符串,以回车结束。

输出格式:

按古风格式排版给定的字符串,每列 $N$ 个字符(除了最后一列可能不足 $N$ 个)。

输入样例:

1
2
4
This is a test case

输出样例:

1
2
3
4
asa T
st ih
e tsi
ce s

思路:

通过模运算把对应行的字符反向加到结果字符串数组中。

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <bits/stdc++.h>
using namespace std;

int N, len, num, cnt = 0, t;
string s, res[105];

int main()
{
cin >> N;
getchar();
getline(cin, s);
len = s.length();
if(len % N != 0)
{
for(int i = 1; i <= len - len / N * N; i++)
{
s += " ";
len++;
}
}
for(int i = 0; i < len; i++)
res[i % N] = s[i] + res[i % N];
for(int i = 0; i < N; i++)
cout << res[i] << endl;

return 0;
}