这个问题实际上是K进制取位和:
举例:2进制 n=110100 使用几次2的x次幂可以将n置0,ans=3
10进制 n=9924 使用几次10的x次幂可以将n置0,ans=9+9+2+4
k进制也相同 ,代码如下:
`#include <bits/stdc++.h>
using namespace std;
using ll = long long; // constexpr 0LL
using ull = unsigned long long; // constexpr 0ULL
using ui = unsigned int; // constexpr U
using ld = long double; // constexpr 0.0L
using pii = pair<int, int>;
using pll = pair<ll, ll>;
define endl '\n'
define inf 0x3f3f3f3f
define xx first
define yy second
define lowbit(x) x & -x
const int dx[4] = {0, 0, 1, -1}, dy[4] = {1, -1, 0, 0};
const ll linf = 1e18;
const double EPS = 1e-9;
const int MOD = 1e9 + 7;
const int N = 2e5 + 10;
void solved()
{
ll n, k;
cin >> n >> k;
if (k == 1||k>n)
{
cout << n << endl;
return;
}
int ans=0;
while(n>0){
ans+=n%k;
n /= k;
}
cout << ans << endl;
}
signed main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int T = 1;
cin >> T;
while (T--)
{
solved();
}
return 0;
}`