2 / 192
Nov 2015

usuwam

  • created

    Nov '15
  • last reply

    May '20
  • 191

    replies

  • 5.0k

    views

  • 60

    users

  • 18

    likes

  • 30

    links

Frequent Posters

There are 191 replies with an estimated read time of 20 minutes.

Ja zrobiłem zmienną na liczbę ciastek zjedzonych przez dotychczas "podliczonych" obżartuchów, potem starczy przeliczyć ogólną liczbę zjedzonych ciastek na pudełka

Ale jak sumować kolejnych obżartuchów w jednej zmiennej ?

ja mam tak:

for(int i = 0; i < liczba_obzartuchow; i++)
{
zjedzone += doba/czas[i];
}

Jescze pytanie
Jak zaokrąglić wynik do Pełnej liczby w górę ? (7,1=8 a nie 7 )

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