1 条题解
-
0
自动搬运
来自洛谷,原作者为

FallingFYC_
但我仍然渴望在每一次追忆之旅中留下闲暇时间,在一个场景前驻足,在岁月的朦胧里瞭望过去的自己,感受尽可能多的甜蜜。搬运于
2025-08-24 22:49:16,当前版本为作者最后更新于2023-08-13 21:21:56,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
分析&思路
观察题目给出的数列,可以发现除第一,二个数外,每个数都等于上一个数乘 ,因此,除了第一,二个数,每个数必须都是偶数。所以,我们可以根据 的奇偶性来分讨:
-
为奇数
必定为第一或第二个数,要使结果最小 需要是第一个数,而乘 的次数为 次(除了第一,二个数),因此结果为 。
-
为偶数
也可以根据如上方法先算出第一个数,再根据如上
柿子式子计算出结果,得到第一个数只要让 不断除以二直到除成奇数为止,原因如上,但同时也要满足当前遍历过的数字个数小于等于 ,用一个变量记录,注意初始值设成 ( 和前两个数中的一个,因为前两个数一样,一共是两个数)。
注意:不开
long long见祖宗。
代码
#include <bits/stdc++.h> using namespace std; int t , n , x; int main() { cin >> t; while (t--) { cin >> n >> x; long long ans; if (x % 2) ans = x * pow(2 , (n - 2)); else { int tx = x , sum = 2; while (!(tx % 2) && sum < n) {tx /= 2; ++sum;} ans = tx * pow(2 , (n - 2)); } cout << ans << endl; } return 0; } -
- 1
信息
- ID
- 8939
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 2
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者