可以找到规律,将第 $N$ 项的 $N$ 对应的二进制表示,转换为以 $k$ 为基底的数即可。
$N=1$ ----> 1 ----> $3^0$
$N=2$ ----> 10 ----> $3^1$
$N=3$ ----> 11 ----> $3^0$+$3^1$
$N=4$ ----> 100 ----> $3^2$
$N=5$ ----> 101 ----> $3^0$+$3^2$
$N=6$ ----> 110 ----> $3^1$+$3^2$
$N=7$ ----> 111 ----> $3^0$+$3^1$+$3^2$
代码
#include <iostream>
using namespace std;
int main()
{
int k, n;
cin >> k >> n;
int res = 0, base = 1;
while (n)
{
res += n % 2 * base;
base *= k;
n /= 2;
}
cout << res << endl;
return 0;
}
666
写法有点像快速幂
是的,简直就是一个模板hhh
中间也可以直接写成:
666666
666
nb