PAT甲级 1031
PAT甲級 1031
- 題目 Hello World for U
- 解析
- 代碼
題目 Hello World for U
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 n1?? characters, then left to right along the bottom line with n?2?? characters, and finally bottom-up along the vertical line with n?3?? characters. And more, we would like U to be as squared as possible – that is, it must be satisfied that n?1?? =n?3?? =max { k | k≤n?2?? for all 3≤n?2?? ≤N } with n?1?? +n?2?? +n?3?? ?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.
解析
輸入字符串,按下列兩個規則排成u,n1為左邊的字符數量,n2為底邊的字符數量,n3位右邊字符數量,N為總的字符數量
代碼
#include<bits/stdc++.h>#define INF 1<<29using namespace std;void pat1031() {string str;cin >> str;int n = 0, n2 = 0;for (int i = 3; i < str.size(); ++i) {int a = (str.size() + 2 - i) % 2;int b = (str.size() + 2 - i) / 2;if (!a && b <= i) {n = b;n2 = i;break;}}for (int i = 0; i < n; ++i) {cout << str[i];if (i != n - 1) {for (int k = 0; k < n2 - 2; ++k) {cout << " ";}}else{cout<<str.substr(n,n2-2);}cout << str[str.size() - i - 1] << endl;}}int main() {pat1031();return 0; }總結
以上是生活随笔為你收集整理的PAT甲级 1031的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android开发之多级下拉列表菜单实现
- 下一篇: 一步步搭建Retrofit+RxJava