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;

浙公网安备 33010602011771号