1 solutions

  • 0
    @ 2025-3-28 19:11:29
    #include<bits/stdc++.h>
    using namespace std;
    const int N=210;
    char g[N][N];
    int main()
    {
    	string s;
    	cin>>s;
    	int n=s.size();
    	int row=1;
    	for(int i=1;i<=n/i;i++) //计算行的最大值 
    	{
    		if(n%i==0)
    		{
    			row=i;
    		}
    	}
    	int col=n/row; //计算列的最小值 
    	s=" "+s;
    	int r=1,c=1;
    	for(int i=1;i<=s.size();i++)
    	{
    		g[r][c++]=s[i]; //放一个就增加一列 
    		if(c==col+1) //如果出界就到第一列 
    		{
    			r++;
    			c=1;
    		}
    	}
    	for(int j=1;j<=col;j++) //先枚举列 
    	{
    		for(int i=1;i<=row;i++) //枚举行 
    		{
    			cout<<g[i][j];
    		}
    	}
    	return 0;
    }
    
    • 1

    Information

    ID
    1250
    Time
    1000ms
    Memory
    256MiB
    Difficulty
    3
    Tags
    # Submissions
    29
    Accepted
    10
    Uploaded By