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;
}
posted @ 2021-01-24 22:20  韩天尊  阅读(46)  评论(0)    收藏  举报