Files
python/TangDou/CSP-J/J1_2020/3_1.cpp
HuangHai 1f397eca87 'commit'
2025-08-30 18:35:01 +08:00

45 lines
1.2 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
代码的作用是十进制的n转换成k进制的数字,输出的ans为进位的次数,len为结果的长度
https://blog.csdn.net/qq_23109971/article/details/111396755
*/
#include <bits/stdc++.h>
using namespace std;
const int N = 10010;
int n, ans, k, len = 1; //最少是1位长度
int d[N];
int main() {
cin >> n >> k; // n:要转换的10进制数,k:k进制
//从0开始枚举每小于n的数字,一个个叠加上去
for (int i = 0; i < n; i++) {
++d[0]; //将叠加上来的1先放到个位上
for (int j = 0; j < len - 1; j++) //看看会不会对现在的每一个位置造成进位?
if (d[j] == k) {
d[j] = 0;
d[j + 1] += 1;
++ans; //记录进位次数
}
//最高位单独处理
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 << ans << endl;
cout << len << endl;
//输出k进制的表示法
// for (int i = len - 1; i >= 0; i--) cout << d[i];
// cout << endl;
return 0;
}