Rozwiązanie
Zadanie 4.2 – matura 2019, maj

Zadanie 4.2 (0-3)

Liczby
Liczby
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(-y) dający(-e) odpowiedzi do poniższych zadań. Zapisz uzyskane odpowiedzi w pliku wyniki4.txt, poprzedzając każdą z nich numerem odpowiedniego zadania.
Uwaga: Plik przyklad.txt zawiera przykładowe dane spełniające warunki zadania.
Odpowiedzi dla danych z tego pliku są podane pod treściami zadań. 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.
W pliku przyklad.txt znajduje się jedna taka liczba: 145 (1!+4!+5! =1+24+120 =145).
Rozwiązanie zadań w Pythonie:
def silnia(n):
	if n == 0:
		return 1
	return n*silnia(n-1)

dane = ""
with open("DANE_PR2\liczby.txt") as f:
	dane = f.readlines()
g = []
for line in dane:
	line = line.strip()
	if int(line) == sum([silnia(int(n)) for n in line]):
		g.append(int(line))

print("4.2.", g)
Pobierz rozwiązanie
Wytłumaczenie pojawi się niebawem.
Wyszukaj więcej zadań z tego arkusza...