PAT (Advanced Level) Practice:1031 Hello World for U (20分)
1031 Hello World for U (20分)
思路
这句话的意思是
n1=n3,同时n1<=n2
又知道:
n1+n2+n3-2=N,即2 * n1+n2=N+2
可得:
n1<=N+2-2 * n1
3 * n1<=N+2
n1又要取最大值,因此n1=(N+2)/2
然后得到n2=N+2-2 * n1
代码
#include <iostream>
using namespace std;
int main()
{
string str;
cin >> str;
int n1 = str.length() + 2;
n1 /= 3;
int n2 = str.length() + 2 - 2 * n1;
for (int i = 0; i < n1-1; i++)
{
cout << str[i];
for (int j = 0; j < n2 - 2; j++)
{
cout << " ";
}
cout << str[str.length() - 1 - i] << endl;
}
for (int i = n1 - 1; i < n1 + n2 - 1; i++)
{
cout << str[i];
}
return 0;
}