Educational Codeforces Round 68 (Rated for Div. 2) A. Remove a Progression
Educational Codeforces Round 68 (Rated for Div. 2)
翻译 岛田小雅
A. Remove a Progression
出题人 adedalic
黑板上写着一行从 \(1\) 到 \(n\) 的数字,你每次擦除其中的一个数字。第 \(i\) 次行动你将擦除剩余数字中的第 \(i\) 个(注意,是将数字整个擦除,而不是只擦除其中的一位)。
你的行动直到黑板上剩余的数字个数少于 \(i\) 时停止。
现在你想知道:当你停止行动时,黑板上剩余的第 \(x\) 个数字是几?
输入格式
第一行是一个整型 \(T\) \((1≤T≤100)\) ,代表测试点个数。接下来 \(T\) 行每一行一个测试点,每个测试点都是独立的。
每一行有被空格分开的两个数 \(n\) 和 \(x\) \((1≤x<n≤109)\)。\(n\) 是数字的最初个数,而 \(x\) 是你想知道的位置。数据保证行动结束时黑板上剩下不少于 \(x\) 个数字。
输出格式
对每个测试点输出位置 \(x\) 的值。
样例
输入
3
3 1
4 2
69 6
输出
2
4
12
官方题解
作者 awoo
用各种方法(比如在你的脑子里,或者在纸上,或者在电脑里)模拟后,我们发现所有的奇数位置的数字全被擦除了,只有偶数位置的数剩下。所以答案是 \(2x\)。
AC 代码
作者 岛田小雅
#include <bits/stdc++.h>
using namespace std;
const int N = 1e9+2;
int t, n, x;
int main()
{
ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin >> t;
while(t--)
{
cin >> n >> x;
cout << 2*x << '\n';
}
return 0;
}