01/10/2018, 13:43

In ra số Armstrong. Em không biết tại sao nó vẫn in ra số 75

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

using namespace std;

int Armstrong(int n)
{
    int SoChuSo = log10(n) + 1;
    int s = n;
    while (n != 0)
    {
        int i = n % 10;
        s -= pow((float) i, SoChuSo);
        n /= 10;
    }
    if (s == n) return 1; else return 0;
}

void DemA(int n)
{
    for (int i = 1; i <= n; i++)
        if (Armstrong(i)) cout << i << endl;
}

int main()
{
    int n;
    cin >> n;
    DemA(n);
    return 0;
}
rogp10 viết 15:46 ngày 01/10/2018

Hàm pow là hàm số thực nên tính toán sẽ không chính xác. (để ý 7^2 + 5^2 = 74)

Bài liên quan
0