Codeforces Round #735 (Div. 2) D. Diane

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;
  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bfucs泽泽泽泽泽泽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值