UESTC1012(水)

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(1T100000) 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

AC代码:

//UESTC1012(水模拟)
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int ans[10],bns[10];
int fun(int n)
{
	int m=0;
	while(n)
	{
		if((n%10)>m) m=n%10; 
		n/=10; 
	}
	return m;
}
int fun1(int n,int a[])
{
	int i=0;
	while(n)
	{
		a[i++]=n%10;
		n/=10;
	}
	return i;
}
int main()
{
	int t,a1,b1,n1,n2,n,cnt,k,i,j,len1,len2;
	int cns[50];
	scanf("%d",&t);
	while(t--)
	{
		memset(ans,0,sizeof(ans));
		memset(bns,0,sizeof(bns));
		scanf("%d%d",&a1,&b1);
		n1=fun(a1);
		n2=fun(b1);
		n=max(n1,n2)+1;
		cnt=0;
	    len1=fun1(a1,ans);
		len2=fun1(b1,bns); 
        len1=max(len1,len2);
		memset(cns,0,sizeof(cns));
		for(i=0;i<len1;i++)
		{
			cns[i]+=ans[i]+bns[i];
			if(cns[i]>=n)
			{
			    cns[i+1]++;
				cns[i]%=n;
			}
		}
		for(i=4;i>=0;i--)  
        {  
           if(cns[i]!=0)  
           {  
             cnt=i;
             break;  
           }  
        }  
		printf("%d\n",cnt+1);
	}
	return 0;
} 






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bokzmm

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值