28 lines
674 B
C++
28 lines
674 B
C++
|
|
#include <bits/stdc++.h>
|
|||
|
|
using namespace std;
|
|||
|
|
|
|||
|
|
typedef long long LL;
|
|||
|
|
/*
|
|||
|
|
离散化的思想。映射到2进制(不会改变任何一位的顺序,
|
|||
|
|
因为k>=3 题意那些k进制表达的数严格单调,就像 1100 > 1011 每位都是排好顺序),
|
|||
|
|
然后看它二进制表示中每一位是1还是0,然后再逆映射回十进制.
|
|||
|
|
*/
|
|||
|
|
LL get(int a, int b) { // a^b
|
|||
|
|
LL res = 1;
|
|||
|
|
while (b--) res *= a;
|
|||
|
|
return res;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int main() {
|
|||
|
|
int n, k;
|
|||
|
|
cin >> k >> n;
|
|||
|
|
|
|||
|
|
LL res = 0;
|
|||
|
|
for (int i = 0; i < 20; i++) // N=1000, 3^?=1000
|
|||
|
|
if (n >> i & 1)
|
|||
|
|
res += get(k, i);
|
|||
|
|
|
|||
|
|
cout << res << endl;
|
|||
|
|
|
|||
|
|
return 0;
|
|||
|
|
}
|