题目描述
输出D进制下的A+B
题目分析
我仍然使用了pow(10,n)的这个函数,因为我每次求出余数的时候我想直接将这个余数直接加入结果。即第一个余数是3,那么sum += 3*pow(10,0)。第二个余数为0,就sum+=0,第三个余数为1,sum+=1 * pow(10,2)等等以此类推,但是最后得到的结果神奇的为1102.而且我将第一个余数输出,它确实也是3,这就很不科学!所以我怀疑是pow()的问题,还希望大家指点。
所以后来用的方法就是vector数组,将每次的余数加入vector数组,然后从后遍历vector数组输出即可。
代码
#include <stdio.h>
#include <iostream>
#include <vector>
#include <math.h>
using namespace std;
int main()
{
int A,B,D;//数字A,B,进制数D
vector<int>rest;
cin>>A>>B>>D;
int sum = A+B;
if(sum == 0)
cout<<0;
else
{
while(sum != 0)
{
rest.push_back(sum % D);
sum = sum / D;
}
}
for(int i = rest.size() - 1;i >= 0;i--)
cout<<rest[i];
return 0;
}
答题用时14min
Q22——finish√