fzu 2125

来源:互联网 发布:港版psv淘宝 编辑:程序博客网 时间:2024/05/18 00:59
#include<stdio.h>
#include<math.h>
int total(int x,int m) {
int sum=0;
while(x>0) {
 sum+=x%m;
 x/=m;
}
return sum;
}
int main() {
  __int64 n,suma,i;
  int m,t,ans,j,h;
scanf("%d",&t);
while(t--) {
scanf("%I64d%d",&n,&m);
ans=-1;
j=(int)sqrt(n*1.0);
for(i=0;i<=100&&i<j;i++) {//因为x的值最大为sqrt(n),最小为n/x-sqrt(n,m)
         h=j-i;
suma=total(h,m);
if(h*(suma+h)==n) {
ans=h;
break;
}
}
printf("%d\n",ans);
}
return 0;
}
0 0