Codeforces Round #735 (Div. 2) D. Diane
题目链接
题目分析:构造长度为n的字符串,使得每一个字符串出现的次数均为奇数次。
思路:
假设这里有k个a,那么它的字串个数为a k, aa k - 1, aaa k - 2, …
如果有k-1个a,那么它的子串个数为a k - 1, aa k - 2, aaa k - 3 …
两者加起来,可得: x + (x - 1) = 2 * x - 1是个奇数
所以,可以采取以下构造方法:
将字符串前n / 2个构造为a,将后n / 2 - 1个也构造为a
中间的串,如果n是奇数用b,如果n是偶数用bc
cin >> n;
if (n <= 3)
{
if (n == 1) cout << "a" << endl;
else if (n == 2) cout << "ab" << endl;
else if (n == 3) cout << "abc" << endl;
return;
}
string s(n / 2, 'a');
string t(n / 2 - 1, 'a');
if (n & 1) cout << s << "bc" << t << endl;
else cout << s << "b" << t << endl;