题目
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 d
e l
l r
lowo
That is, the characters must be printed in the original order, starting top-down from the left vertical line with
n
1
n_{1}
n1 characters, then left to right along the bottom line with
n
2
n_{2}
n2 characters, and finally bottom-up along the vertical line with
n
3
n_{3}
n3 characters. And more, we would like U
to be as squared as possible – that is, it must be satisfied that
n
1
=
n
3
=
m
a
x
(
k
∣
k
⩽
n
2
f
o
r
a
l
l
3
⩽
n
2
⩽
N
)
n_{1}=n_{3}=max\Big(k|k\leqslant n_{2} \space for \space all \space 3 \leqslant n_{2} \leqslant N\Big)
n1=n3=max(k∣k⩽n2 for all 3⩽n2⩽N) with
n
1
+
n
2
+
n
3
−
2
=
N
.
n_{1}+n_{2}+n_{3}-2=N.
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 d
l l
lowor
代码
letter = input()
letter_num = len(letter)
if letter_num % 3 == 0:
n1 = n3 = letter_num // 3
else:
n1 = n3 = letter_num // 3 + 1
n2 = letter_num + 2 - (n1 + n3)
v1 = letter[:n1]
l2 = letter[n1-1: n1 + n2-1]
v3 = letter[n1 + n2 - 2:]
space = len(l2) -2
for i, j in zip(v1[:-1], v3[::-1][:-1]):
print(i+' ' * space +j)
print(''.join(l2))