难点:
change()函数的应用
将1-10和26个alphabet打表(所以题目限制才是进制数<=36)
/*
reference:
translation:
solution:
标签中竟然有“高精”,其实就是模拟类似高精的B进制下的进位啦
trigger:
note:
*isdigit()竟然是字符串的函数……
*英文字母若要表示数字该如何转换
*记得判断高高位
record:
date:
2019.09.11
*/
const int N =2e3+10;
/*
const char* output="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
*/
int a[N],b[N],c[N];
int base;
string s1,s2;
inline int change(char ch){
if(isalpha(ch))
return ch-'A'+10;
else
return ch-'0';
}
inline char change_back(int x){
return 'A'+x-10;
}
int main(){
// freopen("B.txt","r",stdin);
rd(base);
cin>>s1>>s2;
int len1=s1.length();//千万不能用long long 存,因为位数可能会>64,养成大数用字符串存的习惯
int len2=s2.length();
rep(i,0,len1-1)
a[i]=change(s1[len1-i-1]);//逆序转存至数组,方便进位
rep(i,0,len2-1)
b[i]=change(s2[len2-i-1]);
int len=max(len1,len2);
rep(i,0,len-1){
c[i]+=a[i]+b[i];
c[i+1]=c[i]/base;
c[i]%=base;
}
if(c[len])++len;//记得判断 最最高位是否有数,原来的最高位是len
dwn(i,len-1,0){
if(c[i]<=9 && c[i]>=0)
printf("%d",c[i]);
else printf("%c",change_back(c[i]));
}
return 0;
}
/*
4
123
321
*/
//1110