给你一个整数$n$,构造一个长度为$n$的字符串,其中的每个子串出现次数都是奇数次
数据范围:
t组数据,$t \le 500$
$1\le n \le 10^5$
分析:
观察串$aaaaa$(奇数个$a$),可以发现$a$出现了5次,$aa$出现了4次,…,$aaaaa$出现了一次
所以奇数个相同字符,一定是$奇+偶+奇+偶…$
同理,如果是偶数个相同字符,一定是$偶+奇+偶+奇+..$
因为$奇数+偶数=奇数$
所以直接构造$k$个$a$,$k+1$个$a$,中间插入一个$b$或$bc$
如果$n$是偶数,中间加一个$b$,否则加入$bc$
#include <bits/stdc++.h>
using namespace std;
void solve()
{
int n;
scanf("%d", &n);
if(n <= 26)
{
for(char i = 'a'; i <= 'a' + n - 1; i ++ ) cout << i;
puts("");
return;
}
if(n & 1)
{
int k = (n - 3) / 2;
for(int i = 1; i <= k; i ++ ) cout << "a";
cout << "bc";
for(int i = 1; i <= k + 1; i ++ ) cout << "a";
puts("");
}
else
{
int k = (n - 2) / 2;
for(int i = 1; i <= k; i ++ ) cout << "a";
cout << "b";
for(int i = 1; i <= k + 1; i ++ ) cout << "a";
puts("");
}
}
int main()
{
int t;
scanf("%d", &t);
while(t -- ) solve();
return 0;
}