A. Find Minimum Operations
Problem
You are given two integers n n n and k k k.
In one operation, you can subtract any power of k k k from n n n. Formally, in one operation, you can replace n n n by ( n − k x ) (n-k^x) (n−kx) for any non-negative integer x x x.
Find the minimum number of operations required to make n n n equal to 0 0 0.
Input
Each test contains multiple test cases. The first line contains the number of test cases t t t ( 1 ≤ t ≤ 1 0 4 1 \le t \le 10^4 1≤t≤104). The description of the test cases follows.
The only line of each test case contains two integers n n n and k k k ( 1 ≤ n , k ≤ 1 0 9 1 \le n, k \le 10^9 1≤n,k≤109).
Output
For each test case, output the minimum number of operations on a new line.
Example
Input
6
5 2
3 5
16 4
100 3
6492 10
10 1
Output
2
3
1
4
21
10
Note
In the first test case, n = 5 n = 5 n=5 and k = 2 k = 2 k=2. We can perform the following sequence of operations:
- Subtract 2 0 = 1 2^0 = 1 20=1 from 5 5 5. The current value of n n n becomes 5 − 1 = 4 5 - 1 = 4 5−1=4.
- Subtract 2 2 = 4 2^2 = 4 22=4 from 4 4 4. The current value of n n n becomes 4 − 4 = 0 4 - 4 = 0 4−4=0.
It can be shown that there is no way to make n n n equal to 0 0 0 in less than 2 2 2 operations. Thus, 2 2 2 is the answer.
In the second test case, n = 3 n = 3 n=3 and k = 5 k = 5 k=5. We can perform the following sequence of operations:
- Subtract 5 0 = 1 5^0 = 1 50=1 from 3 3 3. The current value of n n n becomes 3 − 1 = 2 3 - 1 = 2 3−1=2.
- Subtract 5 0 = 1 5^0 = 1 50=1 from 2 2 2. The current value of n n n becomes 2 − 1 = 1 2 - 1 = 1 2−1=1.
- Subtract 5 0 = 1 5^0 = 1 50=1 from 1 1 1. The current value of n n n becomes 1 − 1 = 0 1 - 1 = 0 1−1=0.
It can be shown that there is no way to make n n n equal to 0 0 0 in less than 3 3 3 operations. Thus, 3 3 3 is the answer.
Code
// #include <iostream>
// #include <algorithm>
// #include <cstring>
// #include <stack>//栈
// #include <deque>//队列
// #include <queue>//堆/优先队列
// #include <map>//映射
// #include <unordered_map>//哈希表
// #include <vector>//容器,存数组的数,表数组的长度
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
ll t;
cin>>t;
while(t--)
{
ll n,k;
cin>>n>>k;
if(k==1)
{
cout<<n<<endl;
continue;
}
ll ans=0;
while(n)
{
ans+=n%k;
n/=k;
}
cout<<ans<<endl;
}
return 0;
}