"n" - cyfrowa liczba naturalna jest liczba Armstronga, jesli jest równa sumie "n" tych potęg swoich liczb. Napisac program znajdujący wszystkie 2, 3 i 4 cyfrowe liczby Armstronga.
Znalazłem taki program, ale nie wiem czy jest dobry... Program jest mi potrzebny na jutro:(
#include<iostream>
#include<cmath>
using namespace std;
#define N 6
#define System 10
#define Czy_skumulowany true // jeśli false to sprawdza tylko liczby N cyfrowe, jeśli true to wszystkie od 0 do N cyfrowych.
int main()
{
int Gorna_granica = (int)pow((double)System,N)-1;
int dolna_granica = 0;
if(!Czy_skumulowany)
dolna_granica = (int)pow((double)System,N-1);
for(int i=dolna_granica;i<Gorna_granica;i++)
{
int liczba_do_spr = i;
int ilosc_cyfr=0;
for(ilosc_cyfr=0;liczba_do_spr>0;ilosc_cyfr++)
{
liczba_do_spr = liczba_do_spr / 10;
}
if (ilosc_cyfr==0)
ilosc_cyfr=1;
int * cyfry = new int[ilosc_cyfr];
int liczba = i;
int ktora_cyfra=ilosc_cyfr;
int liczba_do_przeliczenia=liczba;
while(--ktora_cyfra>=0)
{
cyfry[ktora_cyfra] = liczba_do_przeliczenia%System;
liczba_do_przeliczenia/=System;
}
int liczba_potega=0;
for(int j=0;j<ilosc_cyfr;j++)
{
liczba_potega += (int)pow((double)cyfry[j],ilosc_cyfr);
}
if(liczba_potega == liczba)
cout << liczba << endl;
}
cin.get();
cin.get();
}