#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;
}
In ra số Armstrong. Em không biết tại sao nó vẫn in ra số 75
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)
Dùng Code::Blocks mà chọn GCM là dính ngay bug này & nhiều bug nữa.
3 Likes