【天梯赛】L1-039 古风排版 (20分)

    科技2024-10-20  20

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

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

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

    输入样例:

    4 This is a test case

    输出样例:

    asa T st ih e tsi ce s

    用num记录每一行的字符个数,如果不满这个多个字符,则补空格之后倒序输出

    #include<iostream> #include<algorithm> using namespace std; int main(){ int n; cin >> n; getchar(); string s; getline(cin, s); int num; for(int i=0; i<n; i++){ int t=i; string s0; while(t<s.length()){ s0+=s[t]; t+=n; } if(i==0) num=s0.length(); if(s0.length() < num) s0.append(num-s0.length(), ' '); reverse(s0.begin(), s0.end()); cout << s0 << endl; } }

    二刷

    #include <iostream> #include <set> using namespace std; int main() { int n; cin >> n; getchar(); string s; getline(cin, s); if(s.length()%n != 0) { int t = n-s.length()%n; for(int i = 0; i < t; i++) { s = s+" "; } } for(int i = 0; i < n; i++) { for(int j = s.length()-1; j >= 0; j--) { if(j%n == i) { cout << s[j]; } } cout << endl; } }
    Processed: 0.026, SQL: 8