PTA刷题Basic篇——1022.D进制的A+B——Day(11)

题目描述

在这里插入图片描述
输出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√

发布了60 篇原创文章 · 获赞 2 · 访问量 1056

猜你喜欢

转载自blog.csdn.net/weixin_44755413/article/details/105592329
今日推荐