题意:把一长串字符串 排成矩形形式 使得行最小 同时每行不能相差大于等于两个字符 每行也不能大于20个字符
思路: 因为使得行最小 直接行从小到大枚举即可 每行不能相差大于等于两个字符相当于 从上往下一列一列填
然后直接模拟即可
#include<bits/stdc++.h>
#define FOR(i,f_start,f_end) for(int i=f_start;i<=f_end;i++)
#define MS(arr,arr_value) memset(arr,arr_value,sizeof(arr))
#define F first
#define S second
#define pii pair<int ,int >
#define mkp make_pair
#define pb push_back
#define arr(zzz) array<ll,zzz>
#define ll long long
using namespace std;
const int maxn=1e6+;
char s[maxn];
int main(){
cin>>s+;
int n=strlen(s+);
for(int i=;i<=;i++){
int tmp=ceil(1.0*n/i);
if(tmp<=){ int flag=i-n%i;
int p=;
if(flag==i)flag=;
cout<<i<<" "<<tmp<<endl;
for(int k=;k<i;i++){
for(int j=;j<tmp;j++){
if(flag&&j==tmp-){
flag--;
cout<<"*";
}
else cout<<s[p++];
if(p>n)return ;
}
cout<<endl;
if(p>n)return ;;
} } }
return ;
}