Dzień dobry! Trzeba zrobić to zadanie.

Tylko w C++. Z góry bardzo dziękuję!


W pliku liczby.txt zapisano 500 liczb całkowitych dodatnich po jednej w każdym wierszu.

Każda liczba jest z zakresu od 1 do 100 000. Napisz program dający odpowiedz do poniższego zadania. Zapisz uzyskane odpowiedzi w pliku wyniki.txt:


Silnią liczby naturalnej k większej od 0 nazywamy wartość iloczynu 1·2·…·k i oznaczamy

przez k!.

Przyjmujemy, że 0!=1. Zatem mamy:

0! = 1,

1! = 1,

2! = 1·2 = 2,

3! = 1·2·3 = 6,

4! = 1·2·3·4 = 24 itd.

Dowolną liczbę naturalną możemy rozbić na cyfry, a następnie policzyć sumę silni jej cyfr. Na przykład dla liczby 343 mamy 3! + 4! + 3! = 6 + 24 + 6 = 36.

Podaj, w kolejności ich występowania w pliku liczby.txt, wszystkie liczby, które są równe sumie silni swoich cyfr.


Dzień Dobry Trzeba Zrobić To Zadanie Tylko W C Z Góry Bardzo Dziękuję W Pliku Liczbytxt Zapisano 500 Liczb Całkowitych Dodatnich Po Jednej W Każdym WierszuKażda class=

Odpowiedź :

Odpowiedź

W załączniku znajdziesz program, który napisałam.

Plik wyniki.txt zawiera po kolei liczby

   2

   145

   1

   40585

Wyjaśnienie

Tak się składa, że  1,  2,  145  oraz  40585  są jedynymi liczbami mniejszymi do stu tysięcy spełniającymi warunek zadania.

Napisałam, że funkcja  silnia()  daje „Poprawne wyniki tylko dla  n <= 12.” ponieważ wartości większe niż  12!  nie mieszą się w typie całkowitym  int,  a nawet w typie całkowitym  unsigned int.

Zobacz obrazek 0AB