Trp_Cys 2023-11-08 18:14 采纳率: 58.6%
浏览 37

自测结果和输出例子一样,为什么结果不通过?

题目描述
把一个整数的各位累加,NowCoder称它为“数位和”。例如正整数123456的数位和是1+2+3+4+5+6=21。现在,请你帮忙计算一个整数n在r进制下的数位和,并用相应的进制输出结果。

输入描述:
输入有多组数据。
每组数据包含两个正整数n (1≤n≤2147483647)和r (2≤n≤16)。

输出描述:
对应每一组数据,输出十进制正整数n转换成r进制后的数位和,并用r进制输出结果。

输入例子:
123456 10
123456 2

输出例子:
21
110

我的C++代码:

#include<iostream>
#include<deque>
#include<cmath>
using namespace std;

deque<int> transArr(long long n, int r) {
    deque<int> de;
    int rsum = 0;

    while (n > 0) {
        de.push_front(n % r);
        n /= r;
    }

    return de;
}

long long trans(deque<int> de) {
    long long res = 0;
    int len = de.size();
    int p = 0;
    for (int i = len - 1; i >= 0; i--) {
        res += de[i] * pow(10, p++);
    }
    return res;
}

int fun(int n, int r) {
    deque<int> de;
    int rsum = 0;

    de = transArr(n, r);

    for (int i = 0; i < de.size(); i++) {
        rsum += de[i];
    }

    rsum = trans(transArr(rsum, r));

    return rsum;
}

int main() {
    long long n;
    int r, rsum;

    while (cin >> n >> r) {
        rsum = fun(n, r);
        cout << rsum << endl;
    }
}

自测结果:

img

提交结果:

img

自测结果和输出例子一样,为什么结果不通过?

  • 写回答

3条回答 默认 最新

  • b2b160 2023-11-08 18:32
    关注

    不要用考试模式试一下,应该是有其他用例不通过

    评论

报告相同问题?

问题事件

  • 创建了问题 11月8日