题目
题意:计算两个数在那种进制的表达下所得到的和的结果的长度最长。
题目分析:
由于题目要求的是结果的长度最长,根据进制的表示直到,如果一个数用越小的进制表示那么它的长度就越长,所以基于这个思路我们来进行计算,但是由于题目中已经给出了两个数,所以我们所选的最小的进制就应该根据这两个数来进行选择。
例如题目中给出的78,那么我们所应选择的最小的进制就是9,如果我们选择8进制,那么显然是不可能的 ,因为78中的个位数字8在8进制中应该表示为1。
由此我们得出结论:所选择的最小进制应该是这两个数中最大的那一个数字+1。
#include<iostream>
#include<cmath>
using namespace std;
int base(int x)
{
int s=0;
int maxx=0;
while(x)
{
s=x%10;
maxx=max(s,maxx);
x=x/10;
}
return maxx;
}
int jisuan(int x,int y)
{
int ans=0;
int p=1;
while(x)
{
ans+=x%10*p;
x/=10;
p*=y;
}
return ans;
}
int main( )
{
int a,b;
cin>>a>>b;
int sum=max(base(a),base(b))+1;
int avg=jisuan(a,sum)+jisuan(b,sum);
int weishu=0;
while(avg)
{
avg/=10;
weishu++;
}
cout<<weishu<<endl;
return 0;
}