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;}
人生就是要感受美丽的善良的,丑恶的病态的。