Ladygod
Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others)
SubmitStatus
10
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 |
---|---|
| |
Hint
Source
Luk
解题思路:
真的没负数。
#include<stdio.h>
#include<string.h>
#include<string>
#include<algorithm>
using namespace std;
char num1[10],num2[10];
int num11,num22;
int ans[50];
int maxx(char *n1,char *n2)
{
int i,j;
int ans=-1;
for(i=0;i<4;i++)
{
ans=(n1[i]-'0'>ans)?n1[i]-'0':ans;
}
for(i=0;i<4;i++)
{
ans=(n2[i]-'0'>ans)?n2[i]-'0':ans;
}
return ans;
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
memset(ans,0,sizeof(ans));
memset(num1,'0',sizeof(num1));
memset(num2,'0',sizeof(num2));
scanf("%d%d",&num11,&num22);
int i,j;
for(i=3;num11>0||num22>0;i--)
{
num1[i]=num11%10+'0',num11/=10;
num2[i]=num22%10+'0',num22/=10;
}
int jj;
jj=maxx(num1,num2)+1;
// printf("%d\n",jj);
int wc=0;
int uu=0;
for(i=3;i>=0;i--)
{
if(num1[i]-'0'+num2[i]-'0'+ans[uu]>=jj)
{
ans[uu]=(num1[i]-'0'+num2[i]-'0'+ans[uu])%jj;
ans[uu+1]++;
}
else
{
ans[uu]=num1[i]-'0'+num2[i]-'0'+ans[uu];
}
uu++;
}
for(int x=4;x>=0;x--)
{
if(ans[x]!=0)
{
wc=x;
break;
}
}
printf("%d\n",wc+1);
}
return 0;
}