PAT (Basic Level) Practice (中文)1022 D进制的A+B (20 分)
输入两个非负 10 进制整数 A 和 B (≤),输出 A+B 的 D (1)进制数。
输入格式:
输入在一行中依次给出 3 个整数 A、B 和 D。
输出格式:
输出 A+B 的 D 进制数。
输入样例:
123 456 8
输出样例:
1103
1 #include <iostream> 2 #include <algorithm> 3 #include <stack> 4 #include <string> 5 #include <cstring> 6 using namespace std; 7 #define ll long long 8 ll m,n; 9 int c; 10 ll a[50]; 11 ll b[50]; 12 int main() 13 { 14 while(cin>>m>>n>>c){ 15 if((m+n)==0){ 16 cout<<"0"<<endl; 17 continue; 18 } 19 memset(a,0,sizeof(a)); 20 memset(b,0,sizeof(b)); 21 int t1=0,t2=0,t=0; 22 while(m){ 23 a[t1++]=m%c; 24 m/=c; 25 } 26 while(n){ 27 b[t2++]=n%c; 28 n/=c; 29 } 30 t=t1>=t2?t1:t2; 31 int tmp=0; 32 for(int i=0;i<t;i++){ 33 a[i]+=tmp; 34 tmp=(a[i]+b[i])/c; 35 a[i]=(a[i]+b[i])%c; 36 } 37 if(tmp>0){ 38 a[t++]=tmp; 39 } 40 for(int i=t-1;i>=0;i--){ 41 cout<<a[i]; 42 if(i==0) cout<<endl; 43 } 44 } 45 return 0; 46 }