Problem hidden
|This problem was hidden by Editorial Board member probably because it has incorrect language|version or invalid test data, or description of the problem is not clear.|

FCTRL3 - Dwie cyfry silni

Zadanie: Silnia

Niech n będzie nieujemną liczbą całkowitą. Liczbę n! (czytaj n-silnia) definiuje się następująco. Jeśli n ≤ 1, to n! = 1. Dla n > 1, n! jest równe iloczynowi wszystkich liczb od 1 do n, czyli n! = 1 * 2 * ... * n. Na przykład 4! = 1*2*3*4 = 24.

Zadanie
Napisz program, który:
  • wczyta ze standardowego wejścia nieujemną liczbę całkowitą n,
  • policzy cyfrę dziesiatek oraz cyfrę jedności w zapisie dziesiętnym liczby n!,
  • wypisze wynik na standardowe wyjście.
Wejście
W pierwszej linii wejścia znajduje się jedna liczba całkowia D (1D≤30), oznaczjąca liczbę przypadków do rozważenia. Opis każdego przypadku składa się z jednej linii, w której znajduje się jedna nieujemna liczba całkowita n (0n ≤ 1 000 000 000).

Wyjście
Dla każdego przypadku z wejścia. Twój program powinien wypisać w osobnej linii dokładnie dwie cyfry (oddzielone pojedynczą spacją): cyfrę dziesiątek i cyfrę jedności liczby n! zapisanej w systemie dziesiętnym.

Przykład
Dla danych wejściowych:
2
1
4
poprawną odpowiedzią jest:
0 1
2 4

Dodane przez:Rafal Nowak
Data dodania:2005-03-04
Limit czasu wykonania programu:1s
Limit długości kodu źródłowego5000B
Limit pamięci:1536MB
Cluster: Cube (Intel G860)
Języki programowania:All except: GOSU

ukryj komentarze
2017-10-15 19:45:14
jeżeli już tak chcesz robić to jedności=w%10 a dziesiątki to ((w-jednosci)/10)%10
2017-10-14 17:00:03
rozwiazanie banalnie proste wystarczy zauważyć co sie dzieje dla dziesiatke i jednosci dla n>9 pozdrawiam :>

Ostatnio edytowany: 2017-10-14 17:01:46
2017-10-03 23:44:35
Jako ciekawostkę podrzucę fakt, iż uparłem się na metodę obliczania silni w 1s dla takich liczb i... AC w 0,76s :D
Zero switch'a, a liczenie tej silni :D

Silnia nie koniecznie mieści się w zmiennej, ale specjalnie wykorzystałem tylko inta, by udowodnić sobie, że się da :D

Ostatnio edytowany: 2017-10-03 23:51:33
2017-09-20 12:10:31
Zadanie można rozwiązać z użyciem funkcji:
funkcja 1 - Zwracająca liczbę dziesiątek dla 4!, 5!, 6! i 8! =2 dla 7! = 4 dla 9!=8, dla pozostałych = 0
funkcja 2 - Zwracjąca liczbę jedności dla 0! i 1! =1 dla 2! = 2 dla 3!=6 dla 4!=4, dla pozostałych = 0

potem wystarczy złączyć wyniki cout<<funkcja1()<<" "<<funkcja2()<<endl;
2017-09-09 20:14:14


Ostatnio edytowany: 2017-09-09 20:50:40
2017-09-06 21:30:24
Wszystko działa ale oczywiście przekroczenie czasu ;/ bez sensu ...
2017-08-17 13:28:20
To zadanie nie polega na "obliczaniu silni". Zajmuje to zbyt wiele czasu, a limit to 1s. W rozwiązaniu skupić się należy stricte na liczbie dziesiętnej i jedność. Warto zauważyć, że dla n>9, liczby te w rozwinięciu dziesiętnym n! są takie same "...00". Pomocna może być tu instrukcja switch(). Program może również wyrzucać błąd jeżeli dostanie na wyjściu zmienną string "0 0" zamiast liczby całkowitej
(cout << 0 << " " << 0 << endl;) Wszystko jasne? Do dzieła!
2017-08-09 23:47:49
#include <iostream>
using namespace std;
int ile;
int z;
long double silnia(int n)
{
if (n==0)return 1;
else return n*silnia(n-1);
}
int main() {

cin>>ile;
for(int i=1; i<=ile; i++)
{
cin>>z;
cout<<silnia(z)<<endl;
}

return 0;
}
przy tym kodzie wyskakuje przekroczono limit czasu mam jakiś błąd??
2017-08-09 13:27:37
Zabawne zadanie na czytanie ze zrozumieniem :) długo nie wiedziałem dlaczego mi nie wychodzi, a nie wychodziło bo... przeoczyłem że program musi też obsługiwać 0 :')
2017-08-08 17:07:41
Ten oto kod nie chce działać:

#include <iostream>
using namespace std;
int silnia(int n)
{
if(n==1) return 1;
else return n*silnia(n-1);
}
int main()
{
int n,D;
cin>>D;
for(int i=1;i<=D;i++)
{
cin>>n;
cout<<silnia(n)/10<<" "<<silnia(n)%10<<endl;
}
return 0;
}

Ktoś ma pomysł czemu?
© Spoj.com. All Rights Reserved. Spoj uses Sphere Engine™ © by Sphere Research Labs.