• 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;
    }


    插个图



  • 相关阅读:
    [Usaco2008 Nov]mixup2 混乱的奶牛
    [Poi2004] 旅行问题
    [洛谷P1278]单词游戏
    redis20
    redis19
    redis18
    OHC Java堆外缓存详解与应用
    SQL优化
    Mysql安装、字符、引擎设置
    大文件下载
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/5158606.html
Copyright © 2020-2023  润新知