很简单的题,但WA了好多次,因为我用字符串转来转去,后来注意到可以是1000进制,就直接用数组储存每一位,然后就AC了,这题其实就是没有进位的加法而已
代码如下:
#include <iostream>
#include <cmath>
#include <cstring>
using namespace std;
int j,k,l;
int arr1[1000],arr2[1000],res[1000];
void to1(int n,int digit){
while(n!=0){
arr1[j++]=n%digit;
n /= digit;
}
}
void to2(int n,int digit){
while(n!=0){
arr2[k++]=n%digit;
n /= digit;
}
}
int main()
{
int test;
cin >> test;
while(test--){
int n,digit,num1,num2,sum=0;
cin >> n >> digit >> num1 >> num2;
memset(arr1,0,sizeof(arr1));
memset(arr2,0,sizeof(arr2));
j=0;
k=0;
l=0;
to1(num1,digit);
to2(num2,digit);
l=(j>k)?j:k;
for(int i=0; i < l; i++){
sum+=(((arr1[i]+arr2[i])%digit)*pow(digit,i));
}
cout << n << " " << sum << endl;
}
}