L1-039 古風排版 (20分)


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;
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM