Acwing 428
可以找到规律,将第 N 项的 N 对应的二进制表示,转换为以 k 为基底的数即可。
N=1=1 ----> 1 ----> \(a^b\)
N=2=2 ----> 10 ----> \(3^1\)
N=3=3 ----> 11 ----> \(3^0\)+\(3^1\)
N=4=4 ----> 100 ----> \(3^2\)
N=5=5 ----> 101 ----> \(3^2\)+\(3^0\)
N=6=6 ----> 110 ----> \(3^1\)+3\(^2\)
N=7=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;
}

浙公网安备 33010602011771号