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;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/6531.html
標籤:C++
上一篇:L1-038 新世界 (5分)
