题解:P1062 [NOIP2006 普及组] 数列
题解:P1062 [NOIP2006 普及组] 数列
注意到
| 答案( |
答案(十进制) | ||
|---|---|---|---|
因此
可得代码:
#include <bits/stdc++.h>
using namespace std;
long long n, k, c = 1, ans;
// c 表示当前位的底数(k 的 [这是第几位] 次方)
int main()
{
cin >> k >> n;
while (n)
{
ans += c * (n & 1); // 如果当前 n 的最后一位是 1,则将 ans 加上 c
c *= k;
n >>= 1; // 将 n 的二进制的最后一位去除
}
cout << ans;
}