题目描述
计算x进制整数a+b的值,( 0 <= a, b <= 10^100);
输入格式
第一行:一个整数x( 2 <=x<=10 || x=16),表示第二行的两个整数位x进制数。
第二行:两个用空格分割的x进制整数a和b.
输出格式
一行:a+b的值 (按原进制输出)
输入输出样例
输入样例1:
10
10 15
输出样例1:
25
输入样例2:
16
A B
输出样例2:
15
【耗时限制】1000ms 【内存限制】128MB
//
//Created by Carlgood.
//
//Note:This program is written in version DEV-C++ 5.11.
//Subject source:"hppt://oj.codingle.cn"
# include <iostream>
# include<cmath>
# include<string>
# include<cstring>
# include<cstdio>
# include<algorithm>
# include<sstream>
# define This_program_is_written_by_Carlgood_Programming_Studio 9876543210
using namespace std;
int a[210],b[210],c[210];
string high_precision(string as,string bs,int x)
{
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
int alen=as.size(),blen=bs.size(),clen=max(alen,blen)+1;
for(int i=1;i<=alen;i++)
{
if(as[alen-i]>='0'&&as[alen-i]<='9')
{
a[i]=as[alen-i]-'0';
}
else
{
a[i]=as[alen-i]-'A'+10;
}
}
for(int i=1;i<=blen;i++)
{
if(bs[blen-i]>='0'&&bs[blen-i]<='9')
{
b[i]=bs[blen-i]-'0';
}
else
{
b[i]=bs[blen-i]-'A'+10;
}
}
for(int i=1;i<=clen;i++)
{
c[i]+=a[i]+b[i];
c[i+1]=c[i]/x;
c[i]%=x;
}
while(c[clen]==0&&clen>1) clen--;
string ans;
for(int i=clen;i>=1;i--)
{
if(c[i]>=0&&c[i]<=9)
{
ans+=c[i]+'0';
}
else
{
ans+=c[i]-10+'A';
}
}
return ans;
}
int main()
{
string a,b;
int x;
cin>>x>>a>>b;
cout<<high_precision(a,b,x);
return 0;
}