• 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 VPS - 50% taniej przez 3 miesiące!
0 głosów
347 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,360 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,360 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ź 813 wizyt
0 głosów
1 odpowiedź 496 wizyt
pytanie zadane 12 stycznia 2019 w SPOJ przez WireNess Stary wyjadacz (11,240 p.)
+1 głos
1 odpowiedź 212 wizyt
pytanie zadane 10 marca 2016 w C i C++ przez CzikaCarry Szeryf (75,340 p.)

93,176 zapytań

142,185 odpowiedzi

321,979 komentarzy

62,506 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 1401p. - dia-Chann
  2. 1380p. - Łukasz Piwowar
  3. 1372p. - CC PL
  4. 1370p. - Łukasz Eckert
  5. 1351p. - Tomasz Bielak
  6. 1328p. - Michal Drewniak
  7. 1312p. - Łukasz Siedlecki
  8. 1302p. - rucin93
  9. 1273p. - Adrian Wieprzkowicz
  10. 1232p. - Mikbac
  11. 1181p. - rafalszastok
  12. 1169p. - Grzegorz Aleksander Klementowski
  13. 1155p. - Piotr Aleksandrowicz
  14. 1149p. - Michał Telesz
  15. 1127p. - Mariusz Fornal
Szczegóły i pełne wyniki

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!

...