1031. Hello World for U (20) [string processing] -- PAT (Advanced Level) Practise
Question Information
1031. Hello World for U (20)
Time limit 400 MS
The memory limit is 65536 kB.
Code length limit: 16000 B
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:
h de ll rlowo
That is, the characters must be printed in the original order, starting top-down from the left vertical line with n1 characters, then left to right along the bottom line with n2 characters, and finally bottom-up along the vertical line with n3 characters. and more, we wowould like U to be as squared as possible-that is, it must be satisfied that n1 = n3 = max {k | k <= n2 for 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 llowor
Solutions
String operation
AC code
#include
#include
int main(){ char s[100]; scanf("%s", s); int len = strlen(s); int tl = (len + 2) / 3 - 1; int sp = len - tl * 2 - 2; int i = 0; for (i = 0; i < tl; ++i){ putchar(s[i]); int t = sp; while (t-- > 0) putchar(' '); putchar(s[len - 1 - i]); putchar('\n'); } for (;i < len - tl; ++i) putchar(s[i]); putchar('\n'); return 0;}