1031 Hello World for U
1031?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 lowoThat is, the characters must be printed in the original order, starting top-down from the left vertical line with?n?1???characters, then left to right along the bottom line with?n?2???characters, and finally bottom-up along the vertical line with?n?3???characters. And more, we would like?U?to be as squared as possible -- that is, it must be satisfied that?n?1??=n?3??=max?{?k?|?k≤n?2???for all?3≤n?2??≤N?} with?n?1??+n?2??+n?3???2=N.
Input Specification:
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.
Output Specification:
For each test case, print the input string in the shape of U as specified in the description.
Sample Input:
helloworld!Sample Output:
h ! e d l l lowor #include<bits/stdc++.h> using namespace std;#define e exp(1) #define pi acos(-1) #define mod 1000000007 #define inf 0x3f3f3f3f #define ll long long #define ull unsigned long long #define mem(a,b) memset(a,b,sizeof(a)) int gcd(int a,int b){return b?gcd(b,a%b):a;}char s[85][85]; char s1[85]; int main() {mem(s,' ');scanf("%s",s1);int len=strlen(s1),cnt=0;int t=(len+2)%3;if(t==0){int x=(len+2)/3,i,j;for(i=0; i<x; i++){s[i][0]=s1[cnt++];}i--;for(j=1; j<x; j++){s[i][j]=s1[cnt++];}j--;i--;for(;i>=0; i--){s[i][x-1]=s1[cnt++];}for(int i=0; i<x; i++){for(int j=0; j<x; j++){printf("%c",s[i][j]);}puts("");}}else{int x=(len+2)/3,i,j;for(i=0; i<x; i++){s[i][0]=s1[cnt++];}i--;for(j=1; j<x+t; j++){s[i][j]=s1[cnt++];}j--;i--;for(;i>=0; i--){s[i][x+t-1]=s1[cnt++];}for(int i=0; i<x; i++){for(int j=0; j<x+t; j++){printf("%c",s[i][j]);}puts("");}}return 0; }?
總結(jié)
以上是生活随笔為你收集整理的1031 Hello World for U的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: YouTube-DNN优化原理推导
- 下一篇: HiveQL中如何排查数据倾斜问题