• 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

Object Storage Arubacloud
0 głosów
256 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 (56,980 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,320 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 (56,980 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ź 673 wizyt
0 głosów
1 odpowiedź 456 wizyt
pytanie zadane 12 stycznia 2019 w SPOJ przez WireNess Stary wyjadacz (11,240 p.)
+1 głos
1 odpowiedź 195 wizyt
pytanie zadane 10 marca 2016 w C i C++ przez CzikaCarry Szeryf (75,340 p.)

92,697 zapytań

141,609 odpowiedzi

320,119 komentarzy

62,057 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.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...