http://acm.fzu.edu.cn/problem.php?pid=2125
#include"stdio.h"
#include"math.h"
__int64 fun(__int64 m,__int64 n)
{
__int64 sum=0;
while(m)
{
sum+=m%n;
m=m/n;
}
return sum;
}
int main()
{
__int64 m,n,i,j,h;
int k;
scanf("%d",&k);
while(k--)
{
scanf("%I64d%I64d",&n,&m);
j=-1;
for(i=1;i<500;i++)
{
h=((-i+sqrt(i*i+4*n))/2);//利用近似一元二次方程来解;
if(h*h+h*fun(h,m)==n)
{
j=h;
break;
}
}
printf("%I64d\n",j);
}
return 0;
}