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

Przyśpieszenie programu w c++

VPS Starter Arubacloud
0 głosów
866 wizyt
pytanie zadane 7 marca 2017 w C i C++ przez styrczu Obywatel (1,050 p.)
edycja 7 marca 2017 przez Patrycjerz

Macie może jakiś pomysł co zmienić w moim kodzie aby wykonywał sie poniżej 1s?

#include <iostream>

using namespace std;

int main()
{
    int D;
    short int n;
    int silnia=1;
   cin>>D;
   for(int i=1;i<=D;i++)
    {
            cin>>n;
        for(int j=n;j>1;j--)
        {
            silnia*=j;
        }
        cout<<(silnia%100)/10<<" "<<silnia%10<<endl;
        silnia=1;
    }
    return 0;
}

Obecnie wykonuje się w 2,6s i zupełnie nie wiem co zmienić.

komentarz 7 marca 2017 przez QizmoPL Stary wyjadacz (11,440 p.)
sam algorytm wykonuje sie w kilka milisekund, dlugo trwa pobranie zmiennej i wypisanie odpowiedzi
komentarz 7 marca 2017 przez 10kw10 Pasjonat (22,880 p.)
Jesli to zadanie jest ze spoja to zmien koncepcje ;)

2 odpowiedzi

0 głosów
odpowiedź 7 marca 2017 przez mokrowski Mędrzec (155,460 p.)
To jest zły algorytm. Proponuję abyś policzył i wypisał wyniki dla potęg. Widzisz jakąś regularność w ostatnich cyfrach?
komentarz 7 marca 2017 przez styrczu Obywatel (1,050 p.)
Ostatnie cyfry są zerami. Może jakaś jeszcze jedna wskazówka w ktora strone isc?
komentarz 7 marca 2017 przez mokrowski Mędrzec (155,460 p.)
komentarz 7 marca 2017 przez styrczu Obywatel (1,050 p.)
dwie cyfry silni, kategoria latwe
komentarz 7 marca 2017 przez mokrowski Mędrzec (155,460 p.)
A jeśli to to zadanie. W takim razie...

1. Zauważ że powyżej pewnej wartości n dla n!, ostatnia cyfra to 0

2. Zauważ że powyżej pewnej wartości n dla n! przed-ostatnia cyfra to 0

3. Poniżej tych wartości tablicuj wyniki.

Lepszej podpowiedzi nie dostaniesz :-)
komentarz 7 marca 2017 przez styrczu Obywatel (1,050 p.)
juz rozumiem, dzieki!
0 głosów
odpowiedź 7 marca 2017 przez MararOn Bywalec (2,620 p.)
A co w przypadku, gdy spoj(bo zakładam że o niego chodzi) będzie chciał dwie ostatnie cyfry jakiejś dużej liczby?

Wypisz sobie wyniki silni np. do 20, wtedy powineneś zobaczyć jak to rozwiązać znacznie prościej.
komentarz 7 marca 2017 przez styrczu Obywatel (1,050 p.)
Moze jakas mala wskazowka? Bo nic mi nie przychodzi do glowy.
komentarz 7 marca 2017 przez MararOn Bywalec (2,620 p.)
Serio nic? ;p

1! == 1
2! == 2
3! == 6
4! == 24
5! == 120
6! == 720
7! == 5040
8! == 40320
9! == 362880
10! == 3628800
11! == 39916800
12! == 479001600
13! == 6227020800
14! == 87178291200
15! == 1307674368000
16! == 20922789888000
17! == 355687428096000
18! == 6402373705728000
19! == 121645100408832000
20! == 2432902008176640000

Podobne pytania

0 głosów
1 odpowiedź 378 wizyt
pytanie zadane 31 grudnia 2016 w C i C++ przez czujek22 Dyskutant (7,670 p.)
0 głosów
3 odpowiedzi 192 wizyt
0 głosów
4 odpowiedzi 1,062 wizyt

92,454 zapytań

141,262 odpowiedzi

319,089 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

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!

...