1 / 5
Feb 2017

Gdzie mam błąd? Sędzia odrzuca im ten kod.

#include <iostream>
#include <sstream>

using namespace std;

int main()
{
    unsigned int n;
    cin>>n;
    for (int i=n; i>2; i--)
    {
        n=n*(i-1);
    }
    stringstream d;
    d << n ;
    string m=d.str();
    int dlugosc = m.length();
    cout<<m[dlugosc-1]<<endl;
    cout<<m[dlugosc-2]<<endl;
    return 0;
}

Twój kod jest niezgodny ze specyfikacją wejścia/wyjścia podaną w zadaniu, przeczytaj jeszcze raz treść i zobacz, co wyświetlasz dla danych przykładowych.

Jak już to poprawisz, to sprawdź, co Twój program wyświetla dla testu

1
25

Poprawny out to

0 0

Ok, faktycznie nie przeczytałem zadania dokładnie. Teraz jestem pewien że jest zgodne z treścią ale wyskakuje że czas został przekroczony.

#include <iostream>
#include <sstream>

using namespace std;
void funkcaj(int n);

int main()
{
    unsigned short D;
    cin>>D;
    if ((1<=D)&&(D<=30)){
        int *tablica;
        tablica = new int [D];

            unsigned int n[D];
            for (int k=0; k<D; k++){
                cin>>n[k];
            }
        for (int i=0; i<D; i++){

            funkcaj(n[i]);
            }
    delete [] tablica;
    }


    return 0;
}

void funkcaj(int n){

    for (int i=n; i>2; i--)
    {
        n=n*(i-1);
    }

    stringstream ss;
    ss << n ;
    string m=ss.str();
    int dlugosc = m.length();
    if (dlugosc<2)  {cout<<"0";}
    else            {cout<<m[dlugosc-2];}
    cout<<" "<<m[dlugosc-1]<<endl;

}

czy sądzisz, że twój program wykonując 30 miliardów mnożeń (maksymalny test) może zmieścić się w wyznaczonym czasie ?

poszukaj innych wątków i poczytaj (powinieneś to zrobić, zanim napisałeś o swoim problemie)