Loading

cf318a 题解

题目把数列分成两个部分:前半部分奇数,后半部分偶数。

第一反应根据 \(n\) 的奇偶性,分成两个情况:

代码实现

auto odd_cnt = (n % 2 == 1 ? n / 2 + 1 : n / 2);

if (k <= odd_cnt) {

	std::cout << k * 2 - 1;

} else {

	std::cout << (k - odd_cnt) * 2;

}

但,分类的情况本质上是向上取整,可以写成 \((n+1)/2\)。完全不用分类。

可以改写成这样 ↓

auto odd_cnt = (n + 1) / 2;
posted @ 2025-08-10 10:41  BaguetteShimada  阅读(7)  评论(0)    收藏  举报