SPOJ - Dwie cyfry silni
Ostatnio zmodyfikowano 2016-08-07 17:39
arczi14 Temat założony przez niniejszego użytkownika |
SPOJ - Dwie cyfry silni » 2014-08-16 21:51:29 Witam, ostatnio zacząłem się bawić w pisanie programów na spoj.com i mam problem z zadaniem "Dwie cyfry silni". Wydaje mi się, że napisałem dobrze kod wyniki są w porządku, a mimo wszytko wywala mi komunikat "Błędna odpowiedz". http://pl.spoj.com/problems/FCTRL3/Jakieś wskazówki ? #include <iostream>
using namespace std;
unsigned int howManyFactorial = 0; unsigned int actuallyFactorial = 0;
int main() { cin >> howManyFactorial; while( howManyFactorial > 0 ) { cin >> actuallyFactorial; unsigned int sum = 1; for( int i = 1; i <= actuallyFactorial; i++ ) { sum *= i; } sum %= 100; cout << int( sum / 10 ) << " " << sum % 10 << endl; howManyFactorial--; } return 0; }
|
|
pekfos |
» 2014-08-16 21:59:33 To zadanie na sposób, a nie rozwiązanie siłowe, jak twoje. Nawet jak poprawisz błędy, które możesz tam mieć, to spoj wywali przekroczenie limitu czasu. |
|
arczi14 Temat założony przez niniejszego użytkownika |
» 2014-08-16 22:43:08 Zrobiłem na if'ach. Bez sensu zadanie ;/ W każdym razie dzięki za wskazówkę. |
|
1aam2am1 |
» 2014-08-16 22:57:40 Poco taka wielka sum wystarczył by uint8_t. Tylko ostatnie dwie cyfry. |
|
pekfos |
» 2014-08-17 15:57:20 Bez sensu, bo na myślenie, zamiast naklepanie kodu który pierwszy przyjdzie do głowy..? Odpal sobie kalkulator windowsa i oblicz silnię z np 20. Po tym po prostu musisz wpaść na rozwiązanie. Poco taka wielka sum wystarczył by uint8_t. Tylko ostatnie dwie cyfry. |
Najprawdopodobniej nie zyskasz na tym ani bajta pamięci, a możesz stracić na wydajności. |
|
Olig86 |
» 2016-08-07 17:12:46 Witam, mam problem z tym samym zadaniem. Poniżej wklejam kod w C++. Bardzo proszę o sugestie/informację co może być nie tak. Według mnie program działa dobrze, ale jednak sędzia go nie przepuszcza. #include <iostream> #include <sstream>
using namespace std;
int main() { int d; string zero = "0"; cin >> d; for( int j = 1; j <= d; j++ ) { int n; int silnia; cin >> n; if( n == 0 ) { silnia = 1; } else if(( n >= 1 ) &&( n <= 9 ) ) { silnia = 1; for( int i = 1; i <= n; i++ ) { silnia = silnia * i; } } else { silnia = 100; } ostringstream ss; ss << silnia; string liczba = ss.str(); liczba = zero + liczba; int dlugosc = liczba.length(); cout << liczba[ dlugosc - 2 ] << " " << liczba[ dlugosc - 1 ] << endl; } return 0; }
|
|
michal11 |
» 2016-08-07 17:39:01 Dobry górnik :D
Poszukaj na forum taki temat był chyba ze 2 razy w ciągu ostatnich 2-3 tygodni. Podpowiem tylko, że w tym zadaniu nie trzeba nic liczyć. |
|
« 1 » |