• 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
124 wizyt
pytanie zadane 12 marca w C i C++ przez alfutek Początkujący (360 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 Maniak (55,720 p.)
Sprawdź ile zajmie policzenie 1000000000!
komentarz 12 marca przez alfutek Początkujący (360 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 (29,050 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 Maniak (55,720 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 Początkujący (360 p.)
Dziękuję za wszystkie sugestie i rady.

 

udało się naprawić błąd

Podobne pytania

0 głosów
1 odpowiedź 458 wizyt
0 głosów
1 odpowiedź 318 wizyt
pytanie zadane 12 stycznia 2019 w SPOJ przez WireNess Stary wyjadacz (11,240 p.)
+1 głos
1 odpowiedź 167 wizyt
pytanie zadane 10 marca 2016 w C i C++ przez CzikaCarry Szeryf (75,320 p.)

91,847 zapytań

140,523 odpowiedzi

317,030 komentarzy

61,170 pasjonatów

Motyw:

Akcja Pajacyk

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

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

...