A125 正经题解
2025-11-24 19:49:01
发布于:广东
7阅读
0回复
0点赞
题意分析
给定一个数列:
……,求该数列第 项。
史上最简单的绿题之一
解题思路
观察题目,容易发现在数列的同一项中每个幂都只会出现至多一次,非 即 ,可以考虑用二进制表示。
进一步验证猜想:将某项是否有 表示为该项二进制编号的最后一位, 表示为倒数第二位,以此类推,可以将数列编号为:
……
可见,二进制转化为十进制正好是项数,可以通过项数的二进制得知该项是由 的哪些幂组成的,从而求出数列某项!
AC代码
#include <bits/stdc++.h>
using namespace std;
int main(){
long long k, n, num=0, pw=1;
cin >> k >> n;
while(n){
if(n&1) num += pw;
pw *= k;
n >>= 1;
}
cout << num;
return 0;
}
这里空空如也





有帮助,赞一个