题目描述
知识点
进制转换
结果
实现
码前思考
- 这种题的常见的坑就是虽然
A
和B
是int
,但是它们的和A+B
有可能超出int
,所以通常要用long long
; - 使用
long long
输入和输出得使用lld
;
代码实现
//由于AB两数相加可能会超出int的范围,所以我们要使用long long
//数据范围
//输入是非负整数!!!
//进制是2~9!!!
#include "bits/stdc++.h"
using namespace std;
typedef long long ll;
ll a;
ll b;
ll ans;
ll m;
vector<ll> res;
int main(){
while(~(scanf("%lld",&m))){
res.clear();
if(m == 0){
break;
}else{
scanf("%lld %lld",&a,&b);
ans = a + b;
do{
res.push_back(ans%m);
ans = ans / m;
}while(ans!=0);
}
for(int i=0;i<res.size();i++){
printf("%lld",res[res.size()-1-i]);
}
printf("\n");
}
return 0;
}
码后反思
- 对于这种不知道数组多长的情况,可以使用
vector
; - 《王道机试指南》上的提示: