题目链接:
https://pintia.cn/problem-sets/994805260223102976/problems/994805299301433344
我的思想:
先把每个输入的数转换成相应的进制,然后相加,并且判断进位,(太麻烦了)
算法笔记的思路是:先把两个数相加,然后转换进制
未AC代码:
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <string>
#include <math.h>
#include <vector>
using namespace std;
const int maxn=1000010;
int a[maxn];
int main(){
long long int num_1,num_2;
int base;
scanf("%lld%lld%d",&num_1,&num_2,&base);
long long int sum=num_1+num_2;
int i=0;
while(sum){
a[i++]=sum%base;
sum/=base;
}
for(int j=i-1;j>=0;j--)
printf("%d",a[j]);
printf("\n");
}
AC代码:
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <string>
#include <math.h>
#include <vector>
using namespace std;
const int maxn=31;//最多31位,所以最大值位31
int a[maxn];
int main(){
long long int num_1,num_2;
int base;
scanf("%lld%lld%d",&num_1,&num_2,&base);
long long int sum=num_1+num_2;
int i=0;
do{
a[i++]=sum%base;
sum/=base;
}while(sum!=0);
for(int j=i-1;j>=0;j--)
printf("%d",a[j]);
printf("\n");
}
两者差距是一个用了while循环,取特殊情况sum=0,则无法处理(自我感觉)
一个用了do-while循环