Nの任意の文字列(≥5)文字を考えると、あなたはの形に文字を形成するように求められます U
。例えば、 helloworld
として印刷することができます。
h d
e l
l r
lowo
すなわち、文字が最終的にN 2つの文字とボトムラインに沿って左から右へ、そして次に、nは1つの文字で左側の縦線からトップダウンを開始、元の順序で印刷されなければならないれるボトムnは3つの文字を縦線に沿ってアップ。そして、もっと、私たちは希望 U
できる限りの二乗のように-つまり、それは、n 1 = N 3 =最大{Kことを確認しなければなりません| N 1 + N 2 + N 3 -2を有する全て3≤n2≤N} = Nためk≤n2。
入力仕様:
各入力ファイルには、1つのテストケースが含まれています。各ケースは5未満とラインで超えない80の文字なしで1つの文字列が含まれています。文字列には空白が含まれていません。
出力仕様:
各テストケースのために、説明に指定されているU形状の入力文字列を印刷します。
サンプル入力:
helloworld!
サンプル出力:
h !
e d
l l
lowor
#include <string>
#include <iostream>
using namespace std;
int main() //没有技术含量的一个 题
{
//freopen("in.txt", "r", stdin);
string s;
cin >> s;
int n1, n2, n3, N = s.length();;
for (n2 = 3; n2 <= N; n2++) //这个地方注意要跳出两层循环 用了goto语句
{
for (n1 = 1; n1 <= n2; n1++)
{
if (2 * n1 + n2 - 2 == N)
{
goto output;
}
}
}
output:
for (int i = 0; i < n1 - 1; i++)
{
cout << s[i];
for (int i = 0; i < n2 - 2; i++)
{
cout << " ";
}
cout << s[N - i - 1]<<endl;
}
for (int i = n1 - 1; i <= N - n1; i++)
{
cout << s[i];
}
//fclose(stdin);
return 0;
}