10 / 192
Nov 2015

zmienną "int o = 0" wrzuć do pętli for... 3 wychodzi Ci dlatego, że "o" nie jest zerowane... smile resztę masz dobrze smile

ej...zaraz...źle... wprowadziłem Ciebie w błąd. w pierwszej mej odpowiedzi... tam nie ma być modulo, tylko zwykłe dzielenie smile

Normalnie służy do tego fukcja ceil() z bilbioteki math ale w tym zadaniu bywają z nią problemy, więc mam coś takiego

if (ile%ciastka==0) ile=ile/ciastka;
    else ile=(ile/ciastka)+1;

ile - ile ciastek zjedli łącznie zawodnicy
ciastka - ile ciastek jest w pudełku.

ps %10 == 0 sprawdza czy ostatnią cyfrą jest zero, a nie czy liczba jest całkowita. Linijka c=c+(86400/temp);

i wszystko co nad nią wydaje mi się w porządku, popraw to co niżej

Nie wiem dlaczego nie wrzuca moich odpowiedzi ;p Musisz wyzerować "c" i "o"...najlepiej zrób ich deklaraję i inicjalizcję w pętli for... int c = 0, o=0...

Deklaracja zmiennych używanych tylko w pętli po za nią - bardzo niedobrze, bo zostają wartości z poprzedniego obiegu. Przeniosłem int N,M,temp,c=0,o=0; do pętli for (int i....) i mi zaliczyło. Swoją drogą zmienna o jest nieużywana, to pewnie jakaś pozostałość po wcześniej wersji.

ps jak tobie też zaliczy, to usuń kod z forum.

2 years later

błędem jest istnienie tej tablicy smile

int n[ile_test-1][ile_abom];

prawdopodobnie wynikający z głownie braku rozumienia co robisz

w efekcie masz o jeden wiersz tablicy za mało, i w ostatnim teście mażesz po pamięci poza tablicą, dla małych testów może nie mieć to znaczenia, dla dużych musi się źle skończyć

a przecież tablica dwuwymiarowa nie jest ci potrzebna (a i tak kolejne przewymiarowanie zamazuje poprzednie dane), a oczywistym jest, że niepotrzebna jest jakakolwiek tablica

generalną zasadą jest używanie tablic statycznych o maksymalnym rozmiarze potrzebnym do rozwiązania problemu (oczywiście o ile to możliwe)

4 months later

1
1 1
86500

Poza tym, możesz też pomysleć jak a) zrobić to bez tablic (zauważ, że wartości, które tam wczytujesz potrzebne Ci są właściwie tylko w jednym momencie) i b) jak zrobić to efektywniej (to dodawanie po 1 zjedzonym czy po 1 pudełku jest niezbyt piękne - da się sprawdzić np. liczbę zjedzonych przez jednego obżartucha jednym dzieleniem).

3 months later

Teraz wczytywanie jest wystarczająco szybkie. Wystarczy teraz, że wyeliminujesz tablicę i będzie AC.
Niepotrzebnie też tworzysz warunki typu: "if(liczbaUczestnikow>0 && liczbaUczestnikow<=10000 && paczkaCiastek>0 && paczkaCiastek<=1000000000)" - to autor zadania deklaruje, że testy są odpowiednio dopasowane do tych warunków, Ty tego nie musisz potwierdzać. Ba! Twój kod powinien również dawać dobre wyniki jeśli nie wszystkie z tych warunków są spełnione (w rozsądnych granicach) na wypadek gdyby się jednak autor pomylił lub zmienił testy.

5 months later
8 days later

Hej, Pierwszy raz rozwiązuje zadanie na SPOJ i juz pierwsze problemy. Gdzie ja mam błąd w kodzie? U mnie wszystko dobrze kompiluje, chyba wszystkie przypadki założyłam, ale może tutaj jest cos inaczej odczytywane. Błagam o pomoc, ledwo zaczęłam, a juz jestem zniechęcona:(

for(int i=0; i<os;i++)
{c[i]=floor(86400/t[i]);
suma+=c[i];
}
suma/=szt;
cout<<ceil(suma)<<endl;

return 0;

}

To zadanie nie współpracuje z ceil-em (sprawdziłem na moim zatwierdzonym kodzie), będziesz musiał if-ować. Pewnie jakiś błąd zaokrąglenia z liczbami zmiennoprzecinkowymi

Ok, dzięki, to dobrze wiedzie, że chyba dobrze rozwiązałam, ale tak jak mówisz, przerobie program. Dzięki serdeczne:)

Zapomniałem wspomnieć, usuń kod z forum jak już ci zacznie działać