Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Cztery ostatnie cyfry silni z 1 000 000 000

Ostatnio zmodyfikowano 2017-04-08 21:19
Autor Wiadomość
DarthBane
Temat założony przez niniejszego użytkownika
Cztery ostatnie cyfry silni z 1 000 000 000
» 2017-04-05 22:52:26
Idąc za ciosem siedziałem nad innym programem, który oblicza silnię i podaje jej cztery ostatnie cyfry. Niestety gdzieś po drodze gubię zakres i nie pokazuje mi poprawnego wyniku.
C/C++
#include <iostream>

using namespace std;

int main()
{
    int n;
    long long s = 1;
    long long a;
    cin >> n;
   
    if( 0 <= n <= 1000000000 );
   
    int i;
    for( long long i = n; i > 1; i-- )
         s *= i;
   
    a = s % 10000;
   
    cout << a;
   
    return 0;
}
P-159845
Saran
» 2017-04-05 22:54:52
Użyj biblioteki GMP pozwalającej na przechowywanie bardzo dużych liczb.

https://gmplib.org/
P-159848
michal11
» 2017-04-05 22:54:54
Otwórz excela (albo weź kartkę) i oblicz silnię dla liczb od 1 do 20, obejrzyj otrzymane wyniki, wyciągnij wnioski i napisz poprawny, prosty program.
P-159849
DarthBane
Temat założony przez niniejszego użytkownika
» 2017-04-06 17:48:50
z pewnością da się jakoś zoptymalizować ten kod, ale udało mi się uzyskać pożądany efekt. Dzięki za podpowiedzi przydały się :)
C/C++
#include <iostream>

using namespace std;

int main()
{
   
    int n;
    long long int s = 1;
    long long int a;
   
    cin >> n;
   
    if( n >= 15 )
    {
       
        cout << "0000";
       
    }
    else
    {
        for( int i = 1; i <= n; i++ )
        {
            s =( s * i );
        }
       
        a =( s % 10000 );
       
        cout << a << endl;
    }
   
    return 0;
}
P-159885
michal11
» 2017-04-06 18:01:24
No chyba nie bardzo, silnia dla 16 to 20922789888000 czyli 4 ostatnie cyfry tej liczby to 8000 a nie 0000. Zresztą moja podpowiedź miała cie nakierować na to aby w ogóle nie obliczać tutaj niczego tylko najzwyczajniej wpisywać odpowiedni wynik z palca.
P-159886
DarthBane
Temat założony przez niniejszego użytkownika
» 2017-04-06 18:49:54
@michal11
nie bardzo rozumiem co masz na myśli o wyniku z palca. a 16! to 2,09228E+13 przynajmniej wg Excella :)
P-159893
jankowalski25
» 2017-04-06 18:54:58
co masz na myśli o wyniku z palca
To, że wystarczy nieznacznie uprościć najbardziej prymitywne rozwiązanie. Jeśli liczba to zero, wypisz wynik dla zera, jeśli liczba to jeden, wypisz wynik dla jedynki, ...
16! to 2,09228E+13
LiczbaCztery ostatnie cyfry
209227898880008000
209228000000000000
Widzisz różnicę?
P-159894
DarthBane
Temat założony przez niniejszego użytkownika
» 2017-04-06 20:10:52
@jankowalski25

masz na myśli dokładniejszą liczbę 16! ? widzieć różnicę widzę tylko nie wiem czym się sugerujesz
P-159909
« 1 » 2
  Strona 1 z 2 Następna strona