提交时间:2024-08-19 19:30:49

运行 ID: 167846

#include <bits/stdc++.h> using namespace std; int main() { string a,b,w; int x[100],y[100],i,k,N; cin>>N; for(i=0;i<=N-1;i++) { if(i<10) w=w+char(48+i); //对要用到的数字进行处理 else w=w+char(55+i); // 对字符处理 } cin>>a>>b; while(a.length()<b.length()) a='0'+a; while(b.length()<a.length()) b='0'+b; // 对齐 a='0'+a; b='0'+b; // 前面多加一位用来进位 for(i=a.length()-1;i>=0;i--) { x[i]=w.find(a[i],0); //查找a[i]再w中的位置获得对应数字 y[i]=w.find(b[i],0); //转换到x,y数组中准备相加 } for(i=a.length()-1;i>=0;i--) { x[i]=x[i]+y[i]; if(x[i]>=N) //进位 { k=i; while(x[k]>=N) { x[k]=x[k]-N; x[k-1]++; k--; } } } for(i=a.length()-1;i>=0;i--) a[i]=w[x[i]]; // 重新转化为N进制数 while(a[0]=='0') // 删除前导0 a.erase(0,1); cout<<a<<endl; return 0; //完结撒花 }