CF1032B Personalized Cup

一个多月前写的题,既然没人写题解,那蒟蒻就写一篇吧

基本思路

既然是输出任意一个解,那么号的位置在那里是没有关系的。我的思路是默认*号在最后面,然后对输入的字符串输出的行数进行分类。

代码

#include<bits/stdc++.h>
using namespace std;
int a,b;
string s;
void print(int a,int b,int p)//打印结果 
{
    for(int i=1;i<=a;i++)
    {
        for(int j=1;j<=b;j++) printf("%c",s[p++]);
        printf("\n");
    }
}
signed main()
{
    cin>>s;//输入字符串
    //判断 
    if(s.size()%20==0)
    {
        a=s.size()/20, b=20;
        printf("%d %d\n",a,b);
        print(a,b,0);
    }
    else
    {
        a=s.size()/20+1;
        if(s.size()%a==0)
        {
            b=s.size()/a;
            printf("%d %d\n",a,b);
            print(a,b,0);
        }
        else
        {
            b=s.size()/a+1;
            printf("%d %d\n",a,b);
            int cnt=0, flag=0;
            for(int i=1;i<=a;i++)
            {
                if(flag==0 && (s.size()-cnt)%(b-1)==0) b--, flag=1;
                for(int j=1;j<=b;j++) printf("%c",s[cnt++]);
                if(flag) printf("*");
                printf("\n");
            }
        }
    }
    return 0;
}

 

猜你喜欢

转载自www.cnblogs.com/edenhazardhty/p/11519583.html
CUP