41 / 59
Dec 2018

Droga Spolecznosci,
rozpoczynam swoje kroki w jezyku Java. Przewertowalem forum, wdrozylem wiele podpowiedzi nie mnie jednak wciaz sedzia wyswietla informacje o przekroczonym limicie czasu. Czy ktos bylby tak mily i pomoglby mi znalezc przyczyne? Z gory bardzo dziekuje!

Coś słabo czytałeś. Ile zajmie ci wykonanie programu dla tego testu?
10
1000000000
1000000000
1000000000
1000000000
1000000000
1000000000
1000000000
1000000000
1000000000
1000000000

Poza tym twój program daje złe wyniki: https://ideone.com/c7ZvlY5

Wie ktos dlaczego to nie dziala?

Chodzi mi bardziej o to ze w ideone dziala a u sedziego nie

działa dla niewielkiego zakresu wejścia - to że test z zadania daje poprawny wynik, to za mało :slight_smile:

sprawdź wynik np. dla:

1
100

Wyszlo “0 8” ale srednio mam gdzie sprawdzic poprawnosc tego poniewaz jest to ogromna liczba.
Czy python moze w zmiennej przechowywac tak duza liczbe?

A czytania ze zrozumieniem wątku nie próbowałeś ? Nawet jest podana wartość silnii 100… Wystarczy przeczytać 3 posty od góry…

dziekuje bardzo za wskazowki :wink: Udalo sie zaliczyc :smiley:

22910244
2018-12-19 21:20:37
krzysztof
Dwie cyfry silni
zaakceptowano

2 months later

Ktoś wie czemu spoj mi tego nie zalicza?

#include <iostream>
#include <string>

using namespace std;

int main()
{

int n,liczba, y, d, j;
string x;
cin>>n;
for(int i=0;i<n;i++)
{
    cin>>liczba;

    if(liczba<4)
    {
        if(liczba==0) cout<<0<<" "<<1<<endl;
        else cout<<0<<" "<<liczba<<endl;
    }
    else if(liczba<10)
    {
        if(liczba==4) cout<<2<<" "<<4<<endl;
        else if(liczba==5||liczba==6||liczba==8) cout<<2<<" "<<0<<endl;
        else if(liczba==7) cout<<4<<" "<<0<<endl;
        else if(liczba==9) cout<<8<<" "<<0<<endl;
    }
    else
    {
        cout<<0<<" "<<0<<endl;
    }

}


return 0;
}
4 years later

Hej, a wie ktoś czemu mi wyrzuca timeout?

#include <iostream>
#include <math.h>
using namespace std;

int wynikSilni = 1;
int silnia(int liczba) {
    if(liczba == 0 || liczba == 1) return wynikSilni;
    return liczba * silnia(liczba-1);
}

int ile;

int main() {
    cin >> ile;
    int tab[ile];
    int rozdzielona[2];
    for (int i = 1; i <= ile; i++) {
        cin >> tab[i];
        string wynik = to_string(silnia(tab[i]));
        int jednosci = wynik.length() - 1;
        int dziesiatki = wynik.length() - 2;
        if(wynik[dziesiatki] == NULL) {
            wynik[1] = wynik[jednosci];
            wynik[0] = '0';
            dziesiatki++;
            jednosci++;
        }

        cout << wynik[dziesiatki] << " " << wynik[jednosci] << endl;
    }
}
  1. Uruchomiałeś swój kod na Ideone? Nie uruchamiałeś. To zrób to i zobacz jakie cuda są na wyniku.
  2. Drugi problem (dotyczący 99% błędnych rozwiązań) jest opisany wiele razy, nawet w tym wątku, kilka postów wyżej.

Podziwiam za cierpliwość. Na ten wątek i chyba o liczbach pierwszych zaglądam żeby sprawdzić na jakie “rewelacyjne” pomysły powpadały…

Masz rację, liczby pierwsze i silnia biją rekordy :slight_smile: dodałbym do tego jeszcze “Czy umiesz potęgować”.
Kilka lat temu przeczytałem na jakimś forum, że SPOJ jest beznadziejny, bo odrzucają dobre rozwiązania zadań. Podał przy tym przykład swojego “dobrego” rozwiązania. Zaciekawiło mnie to, wszedłem na SPOJ i tak to się dla mnie zaczęło… :sunglasses:

To są trzy pierwsze zadania na liście zadań łatwych, a w łatwych to nie są najłatwiejsze zadania. Można tę listę posortować w/g ilości AC rozwiązań, ale skąd to mają wiedzieć początkujący, a to sortowanie i tak nie do końca “wyciągnie” wszystkie najłatwiejsze zadania na początek posortowanej listy.

Wg mnie największym problemem w kontekście (także tych) zadań jest profil osób wchodzących na SPOJa. Nie, żebym profilował nowych, ale wg mego wyobrażenia: 1) umiem zrobić Hello World 2) na kółku z infy zrobiłem kółko i krzyżyk, 3) ktoś mi powiedział, że SPOJ jest taki super i takie zadania dla programistów

No i zaczynamy serię rozczarowań, bo na owym kółku uczyli nas liczyć n! jak wyżej, a tu nagle zonk - matematyka. Do tego wystarczy byle kurs / bootcamp / … - i znowu niespodzienka - Adaś chciał zostać progamistą stron www, a tu klepanie kodu dla klienta pokrywa się ze SPOJem jak zagadki matematyczne i zadania szachowe z egzaminem z algebry, jeśli nie słabiej.

I w sumie rozumiem zawód, bo Ci ludzie zostali oszukani. SPOJ nigdy nie oferował zadań na klepanie ERPów, a z współczesnym IT ma mało wspólnego. Tu nie ma zewnętrznych libek, w C++ chyba nawet boosta nie ma, nie robimy animacji, nie ogarniamy systemu, nie klepiemy if(byłEnter) {wyświetlWiedźmina}. Są zadania raczej matematyczne, którymi ludzie rzadko się interesują, a których przydatność w realu też jest niska (kiedy ostatnio klepaliście KMP?).