Spoj przekorczenie czasu

0

Witam robie to zadanie : http://pl.spoj.com/problems/FCTRL3/
I zrobiłem je wydaje mi się,że jest dobrze u mnie wykonuje się szybko.Robiłem bez rekurencji i z rekurencja ostateczny wynik to :
Może źle przekazuje ilość d?No ale musze ją przekazać tak?

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

I zrobiłem je wydaje mi się,że jest dobrze u mnie wykonuje się szybko

Wg specyfikacji zadania:

nieujemna liczba całkowita n (0 ≤ n ≤ 1 000 000 000)

Wykonaj u siebie test dla n == 1 000 000 000, a potem powiedz nam ile czasu to zajęło.

0

No nie zadziała takie cos :) To jak się powinno wykonwać takie duże silnie?

3

Oblicz sobie kilka przykładowych dużych silni i przyjrzyj się wynikom, coś powinno zwrócić twoją uwagę kontekście zadania.

2

Zadanie nie polega na liczeniu wartości silni. Tak jak wskazał @mad_penguin przyjrzyj się wynikom silni kolejnych liczb naturalnych a potem przeczytaj zadanie ze zrozumieniem :​)

0

Dla większych silni cyfry jedności i dziesiątek robią się ujemne,patrząc w debugerze silnia wychodzi ujemna,ale dalej nie wiem jak to rozwiązać.Ta funkcja rekurencyjna nie będzie dobra?

2

Odpuść na razie debugger. Matematycznie, jakie kolejne są wartości silni kolejnych liczb naturalnych? Konkretnie ostatnie dwie cyfry?

0

Do silni z 10 jest różnie potem są tylko 0.Czyli liczyc silnie do 10,a potem zrobić same zera?

1

Generalnie na tym polega zadanie - masz to zauważyć i wykorzystać.

0

Okej dziękuje.Dopiero zaczynam robić spoja teraz będe bardziej myślał niż prosto w jeden sposób.

1

Wystarczy popatrzeć na zakres danych wejściowych. Skoro n <= 1000 000 000 to od razu można wykluczyć wyliczenie pełnej silni.

1 użytkowników online, w tym zalogowanych: 0, gości: 1