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

SPOJ - Dwie cyfry silni

Ostatnio zmodyfikowano 2016-08-07 17:39
Autor Wiadomość
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 ?
C/C++
#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;
}
P-115592
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.
P-115593
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ę.
P-115595
1aam2am1
» 2014-08-16 22:57:40
Poco taka wielka sum wystarczył by uint8_t. Tylko ostatnie dwie cyfry.
P-115596
pekfos
» 2014-08-17 15:57:20
Bez sensu zadanie ;/
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.
P-115617
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.

C/C++
#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;
}
P-150631
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ć.
P-150633
« 1 »
  Strona 1 z 1