k好数()

Z 心目中定义了一个k好数,这个数可以被表示为k的若干个不同的整数次幕。
例如,30 = 3^3+3^130 是一个 3 好数,而 5 不是一个 3 好数(虽然 5 = 3^1+3^0+3^0, 但是 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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值