上大分的计划失败了。D 没有做出来。
这场吹爆啊!!!都是只有语言基础就可以做的思维题!!!赶紧加 favorites!
构造长度为 \(n\) 的小写字母组成的字符串,使任意一个子串都出现奇数次。
开始想着若干个叠着总会出现偶数个,于是就去想奇奇怪怪的做法,比如 aaba
的重复。但这样的重复总是会使某个串出现偶数次,然后就没辙了。
其实开始想到的反而更接近正解。aaa
这样一段,让 aa
出现了偶数次,但如果再在后面补一个 aa
,中间用什么分隔符隔开,就满足条件了。仔细观察这样的补,aaaaa
中 aaaa
出现了两次,而在后面补个 aaaa
,不仅 aaaa
满足了,同时 aa
的四次出现也被满足了。
容易发现,前面块和后面一块重复个数相差 \(1\)总是满足条件的,因为一个连续串在前面和后面重复出现的奇偶性肯定不同,和肯定是奇数,而其它子串都只出现了 \(1\) 次。所以满足条件。
代码就这。
#include <iostream>
#include <string>
int T, n;
int main() {
std::cin >> T;
while (T--) {
std::cin >> n;
std::string ans(n, ‘a‘);
ans[n/2] = ‘b‘;
if (n & 1) ans[n/2+1] = ‘c‘;
std::cout << ans << ‘\n‘;
}
}