Otóż istnieje taki kod, sprawdzający czy liczba jest narcystyczną (Armstronga).
Opis: pierwsza pętla sprawdza ilość cyfr w liczbie, a więc wyznacza potęgę do której podnosimy kolejne cyfry. W drugiej pętli wyznaczamy cyfrę jedności, podnosimy ją do uprzednio wyznaczonej potęgi i dodajemy do zmiennej przechowującej sumę. Następnie skracamy liczbę o jedną cyfrę (n1 /= 10) i proces powtarzamy, dopóki n1 > 0.
Logiczne, a przynajmniej takie być powinno. Jednak z tego co można zauważyć, przy podnoszeniu cyfry 5 do potęgi 3, funkcja pow() zwraca wartość 124 - za każdym razem.
Dowód: http://goo.gl/lHWXQ3
what the heck, forumowicze? :)
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int n, n1, rem, power = 0, num = 0;
n = n1 = 153;
while(n1 > 0)
{
++power;
n1 /= 10;
}
n1 = n;
while(n1 > 0)
{
rem = n1%10;
cout << rem << "^" << power << " = ";
rem = pow(rem,power);
cout << rem << endl;
num += rem;
n1 /= 10;
}
cout << num;
}