小
Z
心目中定义了一个k好数,这个数可以被表示为k的若干个不同的整数次幕。
例如,30 =
30
是一个
3
好数,而
5
不是一个
3
好数(虽然
5 =
,
但是
0
出现了两次,因为好数要求整数次幕不同)。
现在小
z
得到一个整数n,他想知道n最少可以被表示成几个k好数的和。
输入格式
第一行一个整数
T(1 <T< 10
4
),
表示数据组数。
在每组数据中:
共一行,输入两个整数小
k(l <n< 10^
18
,
l<k<
10^
18
),
表示询问。
输出格式
对于每组数据,一行上输出一个整数,代表最少可以将n分解成
k
好数的个数。
#include<bits/stdc++.h>
using namespace std;
long long n,k,t;
long long L;
int main(){
freopen("goodnum.in","r",stdin);
freopen("goodnum.out","w",stdout);
cin>>t;
for(int r=1;r<=t;++r,L=0){
cin>>n>>k;
while(n)L=max(L,n%k),n/=k;
cout<<L<<endl;
}
return 0;
}