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

Ostatnie cyfry dużej silnii

Ostatnio zmodyfikowano 2015-10-11 23:06
Autor Wiadomość
midaged
Temat założony przez niniejszego użytkownika
Ostatnie cyfry dużej silnii
» 2015-10-11 19:27:06
Dla n=(1,...,10^9) mam wypisać resztę z dzielenia jej silni przez miliard. Oto mój kod:
C/C++
#include <cstdio>
unsigned int n;
unsigned int resz( unsigned int n )
{
    if( n == 0 || n == 1 )
         return 1;
    else
    { if( n >= 45 )
             return 0;
        else
       
             return( resz( n - 1 ) * n ) % 1000000000;
       
    }
   
   
}
int main()
{
    scanf( "%u", & n );
   
    printf( "%u", resz( n ) );
    return 0;
   
}
 Otóż w przedziale (13,...,44) program nie działa. Ktoś pomoże początkującemu?
P-138444
carlosmay
» 2015-10-11 20:02:58
Zmienna typu int wychodzi poza zakres.
Użyj typu dla większego przedziału liczb.
P-138446
notabigthreat
» 2015-10-11 22:10:18
(a*b)%c == ((a%c)*(b%c))%c

Więcej operacji, ale na mniejszych liczbach.

I tak potrzebujesz, by typ przechował (999'999'999)^2.
uint64_t się do tego nada.
P-138456
Piastlis
» 2015-10-11 23:06:46
Zmiana unsigned int na unsigned long long pomoże.
P-138464
« 1 »
  Strona 1 z 1