2021.3.4个人rating赛补题报告

B

题意:给定一个k,判断是否有一个n*m的矩阵使得在每个行和列中各个元音至少出现一次。

题解:因为元音存在5个,所以最重要的先判断k是否大于等于25,然后再列出5*5的矩阵后再模拟其他的元音。

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n;
    char a[5]={'a','e','i','o','u'};
    cin>>n;
    if(n<25){
        cout<<-1<<endl;//小于25的时候不可能构造出来就输出-1
    }
    else{
        int p,q;
        for(int i=5;i<=n;i++){
            if(n%i==0){
                p=i;//找出长
                break;
            }
        }
        q=n/p;//找出宽
        int x=-1,y;
        if(p>=5&&q>=5){
            for(int i=1;i<=p;i++){
                x=(x+1)%5;
                y=x;
                for(int j=1;j<=q;j++){
                    cout<<a[y%5];
                    y++;
                }
            }
            cout<<endl;
        }
        else{
            cout<<-1<<endl;
        }
    }
} 

 

posted @ 2021-03-06 16:34  liyongqishiwo  阅读(61)  评论(0编辑  收藏  举报