A. From Hero to Zero( Educational Codeforces Round 66 (Rated for Div. 2))
emmmmmm不会模真的很烦~~~~
被搞自闭了......
举个例子:59 3
按照题目描述:59 -> 58 -> 57 ->19 -> 18 -> 6 -> 3 ->1 ->0 一共8步
但是这样数字大一点就超时了!!!
所以:
if(n%k!=0){
sum+=n%k;
n-=n%k;
}
else{
n = n/k;
sum++;
}
一开始59 —> 19 进行第一个 if 操作, sum = sum+n%k , n =n - n%k 即(sum = 2,n = 57)等效替代了之前的两个 “ -1” 操作......
剩下操作自己脑补...
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
long long n,k;
long long sum=0;
int main()
{
int t;
cin>>t;
for(int i=0;i<t;i++){
sum = 0,n = 0,k = 0;
cin>>n>>k;
while(1){
if(n == 0){
cout<<sum<<endl;
break;
}
if(n%k!=0){
sum+=n%k;
n-=n%k;
}
else{
n = n/k;
sum++;
}
}
}
return 0;
}