PAT 1031. Hello World for U (20)
2014-09-06 01:43
381 查看
http://pat.zju.edu.cn/contests/pat-a-practise/1031
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:
That 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 n2 characters,
and finally bottom-up along the vertical line with n3 characters.
And more, we would 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:
Sample Output:
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 n1characters,
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 would 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 d l l lowor
#include <cstdio> #include <cstring> int main(){ char s[81]; scanf("%s", s); int n = strlen(s); int a, b; int max = -1; for (int j = 3; j <= n; ++j){ for (int i = 1; i <= j; ++i){ if (2 * i + j == n + 2){ if (i > max) max = i; } } } a = max; b = n + 2 - 2 * a; for (int i = 0; i < a - 1; i++){ printf("%c", s[i]); for (int k = 0; k < b - 2; k++) printf(" "); printf("%c\n", s[n - i -1]); } for (int l = a - 1; l < b + a- 1; l++) printf("%c", s[l]); printf("\n"); return 0; }
相关文章推荐
- 【PAT】1031. Hello World for U (20)
- pat甲级1031. Hello World for U (20)
- 浙大2012上机 PAT 1031. Hello World for U (20)
- 【PAT (Advanced Level)】1031. Hello World for U (20)
- PAT甲级1031. Hello World for U (20)
- PAT 1031. Hello World for U (20)
- PAT甲题题解-1031. Hello World for U (20)-字符串处理,水
- PAT 1031. Hello World for U (20)
- PAT (Advanced) 1031. Hello World for U (20)
- PAT 1031. Hello World for U (20)
- PAT甲级 1031. Hello World for U (20)
- PAT 1031. Hello World for U (20)(构造U型结构)
- 【PAT甲级】1031. Hello World for U (20)
- 浙大PAT 1031. Hello World for U (20)
- [PAT]1031. Hello World for U (20)(Java实现)
- 【PAT】【Advanced Level】1031. Hello World for U (20)
- PAT 甲级 1031. Hello World for U (20)
- PAT (Advanced Level) 1031. Hello World for U (20)
- PAT 1031. Hello World for U (20)
- PAT (Advanced Level) Practise 1031. Hello World for U (20)