34 / 54
Mar 2018

Też się dziwię, ale to tylko dlatego, że sedzia ma małą AI i IQ [iloraz inteligencji]. :wink:

A serio, ilość linijek kodu nie jest dobrym miernikiem dobroci kodu i czymś czym powinieneś się przejmować i do czego bezwzględnie dążyć. Oczywiście jest ważne, aby kod był krótki i treściwy, łatwy do ogarnięcia jednym rzutem oka.

Muszę cię zmartwić, ja ten kod napisałem w 2 linijkach, mało czytelnie dla człowieka, ale wystarczająco dla sędziego. W formie bardziej czytelnej [dla człowieka] zajęło mi to 8 linijek w C++.

PS
Jeżeli interesują cIĘ TAKIE WYZWANIA [PISANIE JAK NAJKRÓTSZEGO KODU] TO TU JEST TAKIE MIEJSCE: http://www.spoj.com/SHORTEN/4

PS Sorry, włączył mi się niechcący capslock

1 month later

Nie rozumiem dlaczego w pierszym teście nie zaokrągla
do 8 ktoś pomorze ?

a ja nie rozumiem, dlaczego oczekujesz, że wartość całkowitą zaokrągli ci w górę

usuń linki do swoich programów - na forum nie powinno być dobrych lub prawie dobrych rozwiązań - niech inni pracują samodzielnie :slight_smile:

7 months later

Cześć!
Czy ma ktoś pomysł co jest nie tak w moim rozwiązaniu? Próbowałam różnych metod, ale utknęłam w martwym punkcie i nie wiem co zrobić. Zamiast 8 pudełek w 1 teście uporczywie wyświetla się 7…

Będę wdzięczna za każdą uwagę.

proponuję abyś wróciła do podręcznika C/C++ i powtórzyła początkowe rozdziały: podstawowe typy danych i działania arytmetyczna na nich.

7 months later

cześć,
moje pierwsze samodzielne zadanie na SPOJu, może się komuś przyda - a propos zmiennych globalnych i lokalnych: sędzia nie przyjął mojego rozwiązania (błąd kompilacji), a po włożeniu zmiennych globalnych do środka - przyjął… (?)

[SPOJ] “Przyjął” nie dlatego, że zmieniłeś zmienne globalne na lokalne. Nie ma to zupełnie żadnego znaczenia i dobrze napisany program ze zmiennymi globalnymi tak samo jak dobry program ze zmiennymi lokalnymi, zawsze dostanie AC.

Po prostu przy okazji “wkładania” poprawiłeś inny/inne błąd/błędy.

2 years later

Najprostszy chyba kod dla tego zadania:

using namespace std;

// Liczba sekund w 24h = 86 400

unsigned long int ZestawyTestowe;
unsigned int Doba = 86400;

int main()
{
cin >> ZestawyTestowe;
long int Tablica[ZestawyTestowe];
for (int i=0; i<ZestawyTestowe; i++)
{
unsigned long int IleZje=0;
//deklaracja obzartuchow
unsigned long int Obzartuchy;
//deklaracja ile ciastek znajduje sie w pudelku
unsigned int CiastkaWPudelku;
//wprowadzamy ilosc obzartuchow i ile ciastek w pudelku
cin >> Obzartuchy >> CiastkaWPudelku;
for (int j=0; j<Obzartuchy; j++)
{
//deklaracja czasu
float Czas;
cin >> Czas;
IleZje+= floor(Doba/Czas);
}

unsigned long int LiczbaPudelek = IleZje / CiastkaWPudelku;

if (IleZje % CiastkaWPudelku !=0)
{
    LiczbaPudelek++;
}
Tablica[i]=LiczbaPudelek;
}
for (int i=0; i<ZestawyTestowe; i++)
{
    cout << Tablica[i] <<endl;
}

return 0;

}

A tu z funkcja:

using namespace std;

// Liczba sekund w 24h = 86 400

void LiczbaPudelek (long int ZestawyTestowe, long int *Tab)
{
unsigned int Doba = 86400;
for (int i=0; i<ZestawyTestowe; i++)
{
unsigned long int IleZje=0;
//deklaracja obzartuchow
unsigned long int Obzartuchy;
//deklaracja ile ciastek znajduje sie w pudelku
unsigned int CiastkaWPudelku;
//wprowadzamy ilosc obzartuchow i ile ciastek w pudelku
cin >> Obzartuchy >> CiastkaWPudelku;
for (int j=0; j<Obzartuchy; j++)
{
//deklaracja czasu
float Czas;
cin >> Czas;
IleZje+= floor(Doba/Czas);
}

unsigned long int LiczbaPudelek = IleZje / CiastkaWPudelku;

if (IleZje % CiastkaWPudelku !=0)
{
    LiczbaPudelek++;
}
Tab[i]=LiczbaPudelek;

}
}

int main()
{
unsigned long int ZestawyTestowe;
cin >> ZestawyTestowe;
long int Tablica[ZestawyTestowe];
LiczbaPudelek(ZestawyTestowe, Tablica);
for (int i=0; i<ZestawyTestowe; i++)
{
cout << Tablica[i] <<endl;
}

return 0;

}

Możesz zdradzić po co zamieściłeś tutaj to coś?

10 months later

Witam,

Jestem nowy na tym serwisie i jeszcze nie wiem jak konkretnie dziala tutaj ten sedzia.

Do zadania obzartuchy przeslalem swoja odpowiedz natomiast sedzia wyrzucil blad sigsegv tzn blad o naruszeniu ochrony pamieci ale przegladajac pare razy kod nigdzie nie widze mozliwosci tego bledu, w code::blocks oczywiscie wszystko dziala.

Moge prosic o pomoc czy jednak mam cos zle w kodzie czy raczej wybieram zle jezyk z roznych dostepnych c++

#include
#include

using namespace std;

int main()
{
int n,test,sumaa,w_pudelku,sekundy[3],kupicc,ciastka[3] ;
float kupic;

    cin>> test;

    for(int x=0;x<test;x++)
    {
      cin>>n;
      cin>> w_pudelku;

    for(int i=0;i<n;i++)
    {

     cin>>sekundy[i];

     ciastka[i] = 86400 / sekundy[i];
     ciastka[i] = floor(ciastka[i]);

     sumaa += ciastka[i];

        if(i==n-1)
     {
     kupic = sumaa/ w_pudelku;
     kupicc = ceil( kupic);
     cout<< kupicc<< endl;
    }
     }
        sumaa=0;
      }



  return 0;

}

po pierwsze jest post dla nowych na forum w gdzie tłumaczy sie podstawowe rzeczy, między innymi jak umieszczać program w poście. A jeszcze lepiej dawać linka z Ideone.com1
Po drugie jesteś pewny że tylko 3 ciastka czy ciastkożerców może wystąpić ? Bo tyle przyszykowałeś miejsca…

Dziekuje za spostrzezenie, przed nastepnymi postami zaznajomie sie z postem dla nowych :slight_smile:

jezeli chodzi o talice to tyle miejsca przygotowalem pod te konkretne zadanie, z ciekawosci sprawdzilem i dalem nawet 20 miejsc ale dalej wyskakuje mi blad kompilacji

(1 ≤ N ≤ 10.000, 1 ≤ M ≤ 1.000.000.000)

Coś mi się wydaje, że w zadaniu mogą wystąpić “troszkę” większe ilości obżartuchów niż 20. Jeśli chcesz, możesz dynamicznie alokować pamięć na tablicę albo użyć kontenera std::vector. Ewentualnie po prostu zrobić statyczną tablicę z 10000 miejscami, w tym zadaniu jeszcze to przejdzie. I nie wyskakuje ci błąd kompilacji, tylko SIGSEGV, co jest spowodowane użyciem pamięci poza tablicą (bo masz duuużo mniejszą niż może być maksymalnie obżartuchów).

dziekuje za rady, faktycznie chodzilo o wielkosc tablic, sugerowalem sie danymi wejsciowymi i pod nie stworzylem program, w zaden sposob nie wpadlbym na to ze musze tak ogromne tablice zrobic w odniesieniu do tresci zadania :slight_smile:

Serio ?? A dane w punktach wejście - wyjście to tak dla jaj pisane??? Historyjka to historyjka. Ona właśnie dla jaj pisana, by pokazać do czego można użyć danego działania itp… A najważniejsze dane są w sekcji wejście i tam podane są zakresy do których trzeba sie dostosować…

Tak jak pisalem to dopiero moje 1 zadanie, sugerowalem sie tylko danymi wejsciowymi ktore byly wypisane pod calym tekstem, teraz juz w kazdych kolejnych zadaniach wiem dokladnie jak czytac zadanie i do czego sie odnosic wiec zamykajac ten watek dziekuje za pomoc

Hej, jest ktoś w stanie pomóc wytłumaczyć czemu nie działa mi rozwiązanie? :slight_smile:

Próbowałem kilkoma sposobami, obecnie wynik podawany jest jako “inf” i też nie potrafię znaleźć wytłumacznia dla tego problemu :confused:

bo jest złe rozwiązanie ?? Co ty w ogóle próbujesz zrobić ? Czemu mają służyć sumy i iloczyny czasów ??