Ostatnie cyfry dużej silnii
Ostatnio zmodyfikowano 2015-10-11 23:06
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: #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? |
|
carlosmay |
» 2015-10-11 20:02:58 Zmienna typu int wychodzi poza zakres. Użyj typu dla większego przedziału liczb. |
|
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. |
|
Piastlis |
» 2015-10-11 23:06:46 Zmiana unsigned int na unsigned long long pomoże. |
|
« 1 » |