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; } } }