本题选自洛谷训练场。。。传送门,点击!
First.
做题前的注意事项:
Second.
上代码!
#include <iostream>
using namespace std;
int Base_n;//n进制。。。。
string _a,_b;
int lna,lnb,lnx;
int a[2010],b[2010];//保证不会超出限度
int main()
{
ios::sync_with_stdio(false);//关闭
cin>>Base_n;
cin>>_a>>_b;
lna=_a.size();
lnb=_b.size();
lnx=max(lna,lnb);//找到最长的字符串长度,以便相加
//接下来的操作为将字符元素转化为数字
for(int i=0;i<lna;i++)
{
if('0'<=_a[lna-i-1]&&_a[lna-i-1]<='9')
a[i]=_a[lna-i-1]-'0';
else
a[i]=_a[lna-i-1]-'A'+10;
}
for(int i=0;i<lnb;i++)
{
if('0'<=_b[lnb-i-1]&&_b[lnb-i-1]<='9')
b[i]=_b[lnb-i-1]-'0';
else
b[i]=_b[lnb-i-1]-'A'+10;
}
//一个循环解决尽量多的问题!
for(int i=0;i<=lnx+9;i++)//相加并进位
{
a[i]+=b[i];
a[i+1]+=a[i]/Base_n;
a[i]%=Base_n;
}
if(a[lnx]!=0) cout<<a[lnx];//是否存在最高位进位
for(int i=lnx-1;i>=0;i--)
{
if(a[i]>=10)
cout<<char('A'+a[i]-10);//注意输出这时应为char类型
else
cout<<a[i];
}
cout<<endl;//好习惯。。。。。
return 0;
}
/*
16
A1
B2
16
A1
BB
16
A1
A2
*/
P.S.:还送三组数据!!!
Third.
有意见请于评论中提出,一同进步。。。。
Fourth.
下次再见。。。。。