Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- begin
- def silnia(liczba) #funkcja od liczenia silni
- return 1 if liczba == 0 #zwraca 1 jezeli liczba argument funkji jest rowny 0 bo 0! = 1
- result = 1
- count = 1
- while count < liczba # petla while z warunkiem jezeli zmienna count jest mniejsza od argumentu - liczba
- count += 1 # zwieksz count o 1
- result = result * count
- end
- return result # zwroc result
- end #zakonczenie funkcji
- t = gets.to_i #wczytaj to t liczbe i przekonwertuj ja do inta
- if t < 1 || t > 10**5 #jezeli liczba t < 1 albo wieksza od 10**5 (** oznacza potege)
- puts "Liczba testow jest nieprawidlowa, zamykam program" #wyrzuca na ekran
- exit! #zamyka program
- end #zakonczenie ifa
- wyniki = []
- t.times do #wykonuje cala petle t razy (t wczytalismy wczesniej)
- #dane = gets.to_i #wczytuje do zmiennej dane i
- reversed = silnia(gets.to_i).to_s.split("").reverse! #do zmiennej reversed umiesc obliczona przez funkcje silnia wczytana liczbe, przekonwertuj otrzymana z funkcji silnia inta do strina go podziel go, dzielac go tworzy sie tablica, ktora jest odwracana (jesli masz tablice [1,2,3,4,5].reverse = [5,4,3,2,1])
- zeros = 0 # zmienna w ktorej bedziemy zapisywac ilosc zer
- i = 0
- count = true #zmienna count ustawiona na true
- while i < reversed.count-1 && count == true #petla while wykonuje sie do poki i < od rozmiaru tablicy reversed i zmienna count to true
- if reversed[i] == "0" #jezeli napotka 0 to wykonuje sie to co jest w ifie
- zeros += 1 # czli zmienna zeros zwieksza o 1
- i += 1 #zmienna i zwieksza o 1
- else #jezeli napotkana liczba jest inna niz 0 to
- count = false #zmienna count ustaw na false przez co nie bedzie wchodzic wiecej w petle while
- end
- end
- wyniki << zeros #po wykonaniu petli while zapisuje zmienna zeros w tablicy z wynikami
- end
- puts "Wyniki" #wyrzuca na ekran
- puts wyniki #wyrzuca na ekran tablice z wynikami
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement