43 lines
895 B
C++
43 lines
895 B
C++
#include <bits/stdc++.h>
|
||
using namespace std;
|
||
|
||
long long n, ans;
|
||
int k, len;
|
||
long long d[1000000];
|
||
|
||
int main() {
|
||
cin >> n >> k;
|
||
|
||
d[0] = 0;
|
||
len = 1;
|
||
ans = 0;
|
||
|
||
for (long long i = 0; i < n; ++i) {
|
||
++d[0]; //每次个位 +1
|
||
|
||
//进位处理到倒数第二高位
|
||
for (int j = 0; j + 1 < len; ++j) {
|
||
if (d[j] == k) { //如果本位到达了k进制的k这个数,本位置0,向前进1
|
||
d[j] = 0;
|
||
d[j + 1] += 1;
|
||
++ans; //记录进位次数
|
||
}
|
||
}
|
||
|
||
//最高位单独处理 涉及到len的调整
|
||
if (d[len - 1] == k) {
|
||
d[len - 1] = 0;
|
||
d[len] = 1;
|
||
++len;
|
||
++ans;
|
||
}
|
||
|
||
//输出k进制的表示法
|
||
// for (int i = len - 1; i >= 0; i--) cout << d[i];
|
||
// cout << endl;
|
||
}
|
||
cout << len << endl;
|
||
//输出进位次数
|
||
// cout << ans << endl;
|
||
return 0;
|
||
} |