#include <cstdio>
#include <cstring>
#include <iostream>
#include <string>
using namespace std;

int main() {
    char str[85]={'\0'};
    while (cin.getline(str, 80)) { 
        int N = strlen(str);
        int a = N/3;
        int b = N%3;

        int but_len=a+b;
        int span_len=but_len-2;

        while(but_len<3 || a+1>but_len){
            but_len+=2;
            span_len+=2;
            a--;
        }

        for(int i=0;i<a;i++){
            printf("%c%*c\n",str[i],span_len+1,str[N-1-i]);
        }
        for(int j=a;j<N-a;j++){
            printf("%c",str[j]);
        }
        cout<<endl;
    }
}
// 64 位输出请用 printf("%lld")

思路:首先把接收到的字符串拆成3等分(对应题中n1=n3<=n2且3<=n2<=N),str.length/3,1.若除不尽就把余数加到底边n2上,然后这种情况一定满足条件n1=n3<=n2且3<=n2<=N,输出就是正确答案;2.若除的尽,则需要调整底边和左右两边的程度,知道其满足条件n1=n3<=n2且3<=n2<=N;

关键点:使用cin.getline(str, 80)函数,直接读取一行数据到字符串(参数80规定读取的长度,防止char数组溢出);

strlen( )函数求出字符串的长度;

printf("%c%*c\n",str[i],span_len+1,str[N-1-i]); str[i]对应第一个%c、str[N-1-i]对应第二个%*c、span_len+1对应*(表示第二个%*c输出的长度,会在字符前面补空格);