Codeforces Round 884 (Div. 1 + Div. 2) D. Row Major
题目要求输出一个字符串,使用最少的字符种类,使得任意所有的i行j列中任意相邻的字符不同
首先相邻的肯定必须不同,i-1和i一定不同,其次观察可得,1和2不同,如果n%3==0的话,则1和2和3都不同,如此反复,直到n%i!=0,则i可以取和1相同然后,得到连续的最长长度为1~i
#include <iostream>
#include <cstring>
#include <string>
#include <algorithm>
#include <cmath>
#include <set>
#include <utility>
#include <vector>
#include <queue>
#include <map>
using namespace std;
const int N=1e6+10;
typedef long long ll;
int n,t;
void solve(){
cin>>n;
int num;
for(int i=1;i<=n;i++){
if(n%i!=0){
num=i;
break;
}
}
for(int i=1;i<=n;i+=num){
for(int j=0;j<num&&i+j<=n;j++){
printf("%c",'a'+j);
}
}
cout<<endl;
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin>>t;
while(t--){
solve();
}
}