1031 Hello World for U (20分)

1031 Hello World for U (20分)

 

第一次做图形打印的题。懵逼。找其他人的解法来学习。意外的发现string有substr()这个好工具。

字符串长度设为len,n=n+2。令 n/3=n1 。把n平均分成三份,n1为截取商的部分, n2=n/3+n%3 ,余数部分全给n2。这使得n1已经尽可能的大,至多与n2相等,这是题目的要求。n2的另一种表达方法是: n2=n-n1*2 ,数值上是一样的。

 1 #include <iostream>
 2 #include<cstdio>
 3 #include<string>
 4 using namespace std; 
 5 int main()
 6 {    string s;
 7      cin>>s;
 8      int n=s.length();
 9      int n1= (n+2)/3;
10      int n2=n-n1*2;
11      string s1=s.substr(0,n1);
12      string s2=s.substr(n1,n2);
13      string s3=s.substr(n1+n2);
14      for(int i=0;i<n1;i++){
15          cout<<s1[i];
16          for(int j=0;j<n2;j++)
17            if(i!=n1-1)
18              cout<<" ";
19            else
20              cout<<s2[j]; 
21      cout<<s3[n1-i-1]<<endl;    
22      } 
23    
24   return 0;
25 }

参考链接:https://blog.csdn.net/qq_40438165/article/details/100081585?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

 

上一篇:PAT A 1031 Hello World for U


下一篇:1031 回顾