L1-039 古風排版 (20分)
中國的古人寫文字,是從右向左豎向排版的。本題就請你編寫程序,把一段文字按古風排版。
輸入格式:
輸入在第一行給出一個正整數 \(N \; (\lt 100)\),是每一列的字符數。第二行給出一個長度不超過 \(1000\) 的非空字符串,以回車結束。
輸出格式:
按古風格式排版給定的字符串,每列 \(N\) 個字符(除了最后一列可能不足 \(N\) 個)。
輸入樣例:
4
This is a test case
輸出樣例:
asa T
st ih
e tsi
ce s
解題思路:
通過在字符串末尾添加一定數量的空格,使得字符串的長度變為 \(N\) 的整數倍。再根據題目中的行列轉換規則,逐行輸出。容易得出第 \(i\) 行第一個字符為新的字符串中倒數第 \(N+1-i\) 個字符,再往前數 \(N\) 個便是下一個字符,以此類推。
代碼:
#include<bits/stdc++.h>
using namespace std;
int n,len;
string s;
int main()
{
cin>>n;
while(getchar()!='\n')continue;
getline(cin,s);
len=s.length();
int t=len%n;
if(t) /*無法整除時添加一定數量的空格*/
for(int i=1;i<=n-t;i++)s+=" ";
len=s.length();
for(int i=1;i<=n;i++) /*逐行輸出*/
{
for(int j=len+i-1-n;j>=0;j-=n)cout<<s[j];
cout<<endl;
}
return 0;
}