• 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 - Virtual Private Server VPS
0 głosów
353 wizyt
pytanie zadane 12 marca 2023 w C i C++ przez alfutek Początkujący (360 p.)
zamknięte 15 marca 2023 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 2023 przez Whistleroosh Maniak (57,400 p.)
Sprawdź ile zajmie policzenie 1000000000!
komentarz 12 marca 2023 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 2023 przez Oscar Nałogowiec (29,340 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 2023 przez Whistleroosh Maniak (57,400 p.)
wybrane 15 marca 2023 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 2023 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ź 849 wizyt
0 głosów
1 odpowiedź 505 wizyt
pytanie zadane 12 stycznia 2019 w SPOJ przez WireNess Stary wyjadacz (11,240 p.)
+1 głos
1 odpowiedź 213 wizyt
pytanie zadane 10 marca 2016 w C i C++ przez CzikaCarry Szeryf (75,340 p.)

93,277 zapytań

142,276 odpowiedzi

322,282 komentarzy

62,595 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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...