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

question-closed Spoj - przekroczono limit czasu

Aruba Cloud PRO i VPS, Openstack, VMWare, MS Hyper-V
0 głosów
62 wizyt
pytanie zadane 12 marca w C i C++ przez alfutek Nowicjusz (170 p.)
zamknięte 15 marca przez alfutek

Hej, 

ma problem z programem nie wiem jak go usprawnić by Spoj nie wyrzucał problemu - przekroczono limit czasu. 

w codeblocks program kompiluje się bez problemu, 

Przejrzałam lupkę i odpowiedzi do podobnych zapytań, ale nie jestem w stanie znaleźć rozwiązania u siebie dlatego niestety poruszam temat ponownie. 

Mój kod dotyczy zadania ze Spoj - FCTRL3 - Dwie cyfry silni (https://pl.spoj.com/problems/FCTRL3/ )

 

#include <iostream>
#include <cmath>

using namespace std;


int main()
{
    int D;
    cin >> D;
    while (D--)
    {
        int n;
        cin >> n;


        int factorial = 1;
        for (int i = 2; i <= n; i++)
        {
            factorial *= i;
        }

        int lastDigit = factorial % 10;
        int tensDigit = (factorial / 10) % 10;


        cout << tensDigit << " " << lastDigit << endl;
    }

    return 0;
}

 

komentarz zamknięcia: uzyskałam odpowiedż
komentarz 12 marca przez Whistleroosh Nałogowiec (47,040 p.)
Sprawdź ile zajmie policzenie 1000000000!
komentarz 12 marca przez alfutek Nowicjusz (170 p.)
właśnie wiem, że długo ale głowie się cały czas nad tym jak to usprawnić :/

Jestem początkującym programistą i jeszcze nie wszystkie tajniki programowania odkryłam (długo jeszcze mi to zajmie :)), dlatego zwracam się do poradę, jakąś podpowiedź lub być może nakierowanie gdzie szukać rozwiązania.
komentarz 12 marca przez Oscar Nałogowiec (28,270 p.)
Podpowiedź - gdy w iloczynie takim w trakcie liczenia silni pojawi się zero na końcu to już zawsze tam zostanie. Pierwsze zero wystąpi po 2*5, czyli w 5! drugie w 10!. Dalej już zawsze na końcu będą co najmniej dwa zera. To taka bardziej zagadka matematyczna niż programistyczna.

1 odpowiedź

+1 głos
odpowiedź 12 marca przez Whistleroosh Nałogowiec (47,040 p.)
wybrane 15 marca przez alfutek
 
Najlepsza
Jesli nie wie się jak rozwiązać takie zadanie zawsze można przyjrzeć się jak wyglądają wyniki dla małych liczb.

Napisz program, który wypisze n! dla małych n (np. n <= 10) i spójrz na ostatnie 2 cyfry. Pamiętaj o doborze odpowiedniego typu zmiennych
komentarz 15 marca przez alfutek Nowicjusz (170 p.)
Dziękuję za wszystkie sugestie i rady.

 

udało się naprawić błąd

Podobne pytania

0 głosów
1 odpowiedź 393 wizyt
0 głosów
1 odpowiedź 235 wizyt
pytanie zadane 12 stycznia 2019 w SPOJ przez WireNess Stary wyjadacz (11,260 p.)
+1 głos
1 odpowiedź 155 wizyt
pytanie zadane 10 marca 2016 w C i C++ przez CzikaCarry Szeryf (75,480 p.)

90,871 zapytań

139,544 odpowiedzi

313,815 komentarzy

60,356 pasjonatów

Motyw:

Akcja Pajacyk

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

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...