Ladygod
Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others)
有一天人诹Lee
在随手帮女神做题,突然女神发现了自己演算纸上的一个式子,但是式子只有两个加数却没有结果,最近在学不同进制加减法的女神忘了这个两个数字是多少进制了(只记得是小于等于
10
10),但是她很好奇在可能的多少进制下这个式子得到的答案长度最长,为了从人赢Lee
手中抢走女神,你需要快速计算出这个答案,例如
78+87=?
78+87=? 在
10
10进制下是
165
165,在
9
9进制下是
176
176,而小于等于
8
8的进制显然是不合法的,所以这个式子答案可能的最长长度就是
3
3.
Input
第一行读入一个整数 T(1≤T≤100000) T(1≤T≤100000) 表示数据组数
接下来有 T T行
每行含两个数 A,B A,B (不超过 4 4位的非 0 0整数)
Output
对于每个数据输出一个数字,表示可能的答案的最大长度
Sample input and output
Sample Input | Sample Output |
---|---|
2 78 87 1 1 | 3 2 |
#include<cstdio>
int main()
{
int T,a,b,i,k1,k2,a1,a2,flag,k,num,ans,t,max;
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&a,&b);
max=0;
for(i=2;i<=10;)
{
flag=0;
k1=a,k2=b;
a1=a2=0;
t=1;
while(k1)
{
k=k1%10;
if(k>=i)
{
i=k+1;
flag=1;
break;
}
k1/=10;
a1+=k*t;
t*=i;
}
if(flag)
continue;
t=1;
while(k2)
{
k=k2%10;
if(k>=i)
{
i=k+1;
flag=1;
break;
}
k2/=10;
a2+=k*t;
t*=i;
}
if(flag)
continue;
ans=a1+a2;
num=0;
while(ans)
{
ans=ans/i;
num++;
}
if(num>max)
max=num;
i++;
}
printf("%d\n",max);
}
return 0;
}