1031. Hello World for U (20)

Given any string of N (>=5) characters, you are asked to form the characters into the shape of U. For example, "helloworld" can be printed as:

h de ll rlowoThat is, the characters must be printed in the original order, starting top-down from the left vertical line with n1characters, then left to right along the bottom line with n2characters, and finally bottom-up along the vertical line with n3characters. And more, we would like U to be as squared as possible — that is, it must be satisfied that n1= n3= max { k| k <= n2for all 3 <= n2<= N } with n1+ n2+ n3- 2 = N.

Input Specification:

Each input file contains one test case. Each case contains one string with no less than 5 and no more than 80 characters in a line. The string contains no white space.

Output Specification:

For each test case, print the input string in the shape of U as specified in the description.

Sample Input:helloworld!Sample Output:h !e dl l

lowor

//可以用char数组做,,本人喜欢用string做,比较简单#include <iostream>#include <string>using namespace std;int main() {string str;int n, n1, n2, n3, i, j, start, end;while(cin>>str) {n = str.length();n1 = n3 = (n + 2)/3;n2 = n – n1 – n3 + 2;start = 0;end = n – 1;for(i = 0; i < n1; i++) {if(i == n1 – 1) {for(j=0; j<n2; j++) {cout<<str[start++];}} else {cout<<str[start++];for(j=0; j<n2-2; j++) {cout<<" ";}cout<<str[end–]<<endl;}}}return 0;}

人生就是要感受美丽的善良的,丑恶的病态的。

1031. Hello World for U (20)

相关文章:

你感兴趣的文章:

标签云: