PAT 1002 Hello World for U (20)

简介:

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 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. 
输入描写叙述:
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.


输出描写叙述:
For each test case, print the input string in the shape of U as specified in the description.

输入样例:
helloworld!

输出样例:
h   !
e   d
l   l
lowor


#include <iostream>
#include <cstring>
#include <string>

using namespace std;

int main()
{
	int i1,i2,left_right,down,i,j,k;
	char s[1024];
	while(cin>>s)
	{

		i1=(strlen(s)+2)/3;
		i2=(strlen(s)+2)%3;
		if(1==i2)
		{
			left_right=i1;
			down=i1+1;
		}
		else if(2==i2)
		{
			left_right=i1;
			down=i1+2;
		}
		else
		{
			left_right=down=i1;
		}
		for(i=0,k=0;i<left_right-1;i++)
		{
			cout<<s[k];
			for(j=2;j<down;j++)
				cout<<" ";
			cout<<s[strlen(s)-1-k]<<endl;
			k++;
		}
		for(i=k;i<strlen(s)-k;i++)
			cout<<s[i];
		cout<<endl;
	}
	return 0;
}


插个图






本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/5158606.html,如需转载请自行联系原作者

相关文章
|
5G 调度
关键技术一:LTE 同构小区间干扰协调 | 带你读《5G UDN(超密集网络)技术详解》之十
本章节进一步详细解释 LTE 小小区相关的关键技术之一:LTE 同构小区间干扰协调,并且关联 着说明它们对后续 5G NR 小小区的基线性影响和适用情况。
关键技术一:LTE 同构小区间干扰协调 | 带你读《5G UDN(超密集网络)技术详解》之十
|
10月前
|
人工智能 Cloud Native 大数据
跳出营销噱头,深度探索国内培训格局
企业培训从最初的技能补缺,到如今的战略性人才发展布局,它正在从“成本中心”转向“价值创造中心”。一些央企、国企、上市公司更是将培训作为战略推动器,以培养具备全球化视野、数字化思维和创新精神的人才队伍。好的企业培训公司,就像一台高性能引擎,不仅帮助组织提速增效,更能在关键节点实现人才梯队的“基因升级”。
|
10月前
|
机器学习/深度学习 人工智能 前端开发
【AI系统】计算图的控制流实现
计算图作为有向无环图(DAG),能够抽象神经网络模型,但在编程中遇到控制流语句(如if、else、while、for)时,如何表示成为难题。引入控制流后,开发者可构建更复杂的模型结构,但部署含控制流的模型至不支持Python的设备上较为困难。目前,PyTorch仅支持Python控制流,而TensorFlow通过引入控制流原语来解决此问题。计算图的动态与静态实现各有优劣,动态图易于调试,静态图利于优化。
208 5
【AI系统】计算图的控制流实现
|
10月前
|
算法 网络安全 区块链
2023/11/10学习记录-C/C++对称分组加密DES
本文介绍了对称分组加密的常见算法(如DES、3DES、AES和国密SM4)及其应用场景,包括文件和视频加密、比特币私钥加密、消息和配置项加密及SSL通信加密。文章还详细展示了如何使用异或实现一个简易的对称加密算法,并通过示例代码演示了DES算法在ECB和CBC模式下的加密和解密过程,以及如何封装DES实现CBC和ECB的PKCS7Padding分块填充。
195 4
2023/11/10学习记录-C/C++对称分组加密DES
|
12月前
|
运维 网络协议 Linux
linux系统命令 losf详解
**lsof命令**(List Open Files)是Linux系统中一个非常实用的工具,用于列出当前系统上所有打开的文件以及与之关联的进程。以下是对lsof命令的详细介绍: ### 一、基本功能 lsof命令可以显示系统中被进程打开的文件,这些文件可以是普通文件、目录、网络套接字、设备文件等。通过lsof命令,用户可以方便地查看哪些文件被哪些进程打开,以及这些文件的状态信息。 ### 二、基本语法 lsof命令的基本语法为:`lsof [选项] [文件]`。其中,选项用于指定lsof命令的行为,文件则是可选的,用于指定要查询的文件。 ### 三、常用选项 * `-a` 或 `-
545 6
|
存储 Java 编译器
JNI内存方面说明以及相关类型手动释放内存
JNI内存方面说明以及相关类型手动释放内存
1341 0
Object类型转换为long或者Long
1.转换为long Object o = new Object();long l = Long.valueOf(String.valueOf(o)).longValue();   2.转换为Long Object o = new Object();long l = Long.
4293 0
|
Oracle 关系型数据库 数据库
一篇文章带你了解Oracle 数据库中 CROSS JOIN(cross join) 语法的作用
一篇文章带你了解Oracle 数据库中 CROSS JOIN(cross join) 语法的作用
1235 0
|
自然语言处理
自然语言处理工具Spacy使用笔记
自然语言处理工具Spacy使用笔记