Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/163.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
阿姆斯特朗数字。失败了153次 一个C++程序,计算和显示所有阿姆斯壮数(数字,使得每个位数与数字位数的幂之和等于100)。答案应该是153370371407。它只印了153页_C++_Loops_Number Theory - Fatal编程技术网

阿姆斯特朗数字。失败了153次 一个C++程序,计算和显示所有阿姆斯壮数(数字,使得每个位数与数字位数的幂之和等于100)。答案应该是153370371407。它只印了153页

阿姆斯特朗数字。失败了153次 一个C++程序,计算和显示所有阿姆斯壮数(数字,使得每个位数与数字位数的幂之和等于100)。答案应该是153370371407。它只印了153页,c++,loops,number-theory,C++,Loops,Number Theory,已完成调试,以查看i=153的各个数字的值 #include <iostream> #include <vector> #include <math.h> void separateDigits(int n, std::vector<int>& digits) { if (n>0) { separateDigits(n/10, digits); digits.push_back(n%1

已完成调试,以查看i=153的各个数字的值

#include <iostream>
#include <vector>
#include <math.h>

void separateDigits(int n, std::vector<int>& digits)
{
    if (n>0)
    {
        separateDigits(n/10, digits);
        digits.push_back(n%10);
    }
}

int main()
{
    for (int i = 100; i <= 999; i++)
    {
        std::vector<int> test;
        separateDigits(i, test);

        int powerSum = 0;
        for (auto iter = test.begin(); iter != test.end(); iter++)
        {
            //powerSum = powerSum + pow((*iter),3);
            powerSum = powerSum + (*iter)*(*iter)*(*iter);
        }

        if (i==powerSum)
        {
            std::cout << "Armstrong: " << i << std::endl;
        }

    }


    return 0;
}

#包括
#包括
#包括
void separatedgits(整数n,标准::矢量和数字)
{
如果(n>0)
{
独立数字(n/10,数字);
数字。推回(n%10);
}
}
int main()
{

对于(int i=100;i这似乎不是您的最佳选择:

powerSum = powerSum + (*iter)*(*iter)*(*iter);
由于现在已嵌入上一个常量
3

powerSum = powerSum + pow((*iter),3);
在一个更模糊的方式中,为什么不考虑一种更清洁的方式,它还支持三位数以外的数量:

    unsigned digitsSize = test.size();

    for (auto iter = test.begin(); iter != test.end(); iter++)
    {
        unsigned power = 1;

        for (unsigned size = 0; size < digitsSize; size++) {
            power *= *iter;
        }

        powerSum += power;
    }

这似乎不是您的最佳选择:

powerSum = powerSum + (*iter)*(*iter)*(*iter);
由于现在已嵌入上一个常量
3

powerSum = powerSum + pow((*iter),3);
在一个更模糊的方式中,为什么不考虑一种更清洁的方式,它还支持三位数以外的数量:

    unsigned digitsSize = test.size();

    for (auto iter = test.begin(); iter != test.end(); iter++)
    {
        unsigned power = 1;

        for (unsigned size = 0; size < digitsSize; size++) {
            power *= *iter;
        }

        powerSum += power;
    }
#包括//查找ARMSRONG编号的程序。
#include//仅适用于三位数字。
int main()
{
int num,dig1,dig2,dig3;
对于(num=1;num
#include//程序,用于查找ARMSRONG编号。
#include//仅适用于三位数字。
int main()
{
int num,dig1,dig2,dig3;

对于(num=1;num我看到153
pow
是一个浮点函数,因此它会有舍入错误。为什么不改用普通整数乘法呢,就像在
*iter**iter**iter
中一样?你的代码对我来说很好!奇怪。对我来说不起作用,在post中添加了屏幕截图。我看到153
pow
是一个浮点函数n、 因此,它会有舍入错误。为什么不使用普通整数乘法来代替呢,就像在
*iter**iter**iter
中一样?你的代码对我来说非常好!奇怪。不适合我,屏幕截图添加到帖子中。不要对
int
使用
pow
。不要对
int
s使用
pow