• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Problem z zadaniem SPOJ - Dwie cyfry silni (przekroczono limit czasu)

Cloud VPS
0 głosów
3,403 wizyt
pytanie zadane 15 marca 2016 w C i C++ przez Majkel00 Nowicjusz (230 p.)

Witam serdecznie!

Mam mały problem z zadaniem "Dwie cyfry silni" SPOJa, wcześniej gdy wykonałem kod z silnią przeprowadzoną iteracyjnie, otrzymałem komunikat o przekroczeniu limitu czasu, postanowiłem więc napisać silnie rekurencyjnie, niestety nadal otrzymuję ten sam komunikat. Zdaję sobie sprawę, z tego iż silnia rośnie w zabójczym tempie, ale nie mam niestety pomysłu jak mógłbym uprościć ten kod jeszcze bardziej i co za tym idzie wpłynąć na jego szybkość wykonywania się. Prosiłbym o pomoc przy tym kodzie oraz jakieś wskazówki dotyczące przyspieszania programów w C++. Z góry dziękuje i pozdrawiam!

Oto mój kod:

#include <cstdlib>
#include <iostream>
using namespace std;

long long silnia(int n)
{
 if(n<2)
        return 1;
        return n*silnia(n-1);
}

int main()
{
    int t;
    cin >> t;
    int n;
    for(int i=0; i<t; i++)
        {
    cin>>n;
    cout << (silnia(n))%10 << " " << (((silnia(n))%100)-((silnia(n))%10))/10<< endl;
        };
 return 0;
}



 

1 odpowiedź

+2 głosów
odpowiedź 15 marca 2016 przez daan Pasjonat (17,640 p.)
Wskazówka, która właściwie jest kluczem do zadania : zbadaj co się dzieje z silnią gdy n > 10. Dodatkowo wydaje mi się, że niepoprawnie wypisujesz te liczby, w zadaniu jest o ile się nie mylę aby wypisać najpierw cyfrę dziesiątek (x%100)/10 a potem cyfre jedności (x%10).

Podobne pytania

0 głosów
1 odpowiedź 1,267 wizyt
pytanie zadane 19 października 2016 w C i C++ przez Paq_93 Początkujący (260 p.)
+1 głos
2 odpowiedzi 651 wizyt
pytanie zadane 1 marca 2016 w C i C++ przez cherubinek Nowicjusz (190 p.)
0 głosów
5 odpowiedzi 2,408 wizyt
pytanie zadane 7 lutego 2016 w C i C++ przez XPACK Początkujący (320 p.)

93,481 zapytań

142,414 odpowiedzi

322,758 komentarzy

62,893 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...