Obżartuchy - program działa ale jednak

0

Działający program oraz akceptowalny przez sędziego.

#include <iostream>
using namespace std ;
int main()
{
    int ile;
    cin>>ile;
    for(int i=1; i<=ile; i++)
    {
    int gosc,ciastka,sum=0;
    cin>>gosc>>ciastka;
    for(int j=1; j<=gosc; ++j)
    {
        int czas;
        cin>>czas;
        sum+=24*60*60/czas;
    }
        if (sum%ciastka==0) sum=sum/ciastka;
        else sum=(sum/ciastka)+1;
        cout<<sum<<endl;
    }
    return 0;
}

0

A mamy zgadywać co to za zadanie, jakie są zakresy danych i JAKI błąd daje ci sprawdzarka? o_O

2
  1. Brak formatowania kodu: http://4programmers.net/Forum/998482
  2. Smrodek przy inkrementacji: http://4programmers.net/Forum/1101404
  3. Odradzam polskiego nazewnictwa: http://4programmers.net/Forum/1208091 jednoliterowe też nie należy stosować no chyba że jest zgodne z oznaczeniami w zadaniu.
  4. Zapoznaj się z operatorem +=
  5. Nie rozdzielaj stałych: x+=24*3600/czasy;
  6. Nadmierny kod przy zaokrągleniu do góry, wystarczy: x=(x+m-1)/m;
  7. Problem z tym że x nie mieści ci się w int'a
#include <stdio.h>
 
int main()
  {
   unsigned T,N,M,X;
   unsigned long long sum;
   for(scanf("%u",&T);T--;printf("%llu\n",(sum+M-1)/M)) for(sum=0,scanf("%u%u",&N,&M);N--;sum+=24*60*60/X) scanf("%u",&X);
   return 0;
  }
0

Dziękuję wszystkim za pomoc zadanie udało mi się rozwiązać. W pierwszym poście wklejam prawidłowo rozwiązane.

0

Cześć, szukałem długo rozwiązania dla tego zadania. W każdym razie dłużej niż się spodziewałem - zdawało się być proste.
Stworzyłem kilka różnych kodów. Tak naprawdę pierwszy który zrobiłem był najbardziej skomplikowany, pracowałem nad przejrzystością kodu i ostatecznie wyszedł bardzo podobny do Twojego. Różnił się poleceniem do obliczenia ilość pudełek.

Zamiast:

if (sum%ciastka==0) sum=sum/ciastka;
else sum=(sum/ciastka)+1;
cout<<sum<<endl;

miałem:

int ile_pudelek=0;
do (ile_pudelek++);
while (potrzeba_ciast>(ile_pudelek*ciast_w_pud));
cout<<ile_pudelek<<endl;

gdzie <twoja zmienna="zmienna"> to ---> <moja zmienna="zmienna">
sum ---> potrzeba_ciast
ciastka ---> ciast_w_pud

a <ile_pudelek> jest nowa zmienną.

w CodeBlocks wszystko się zgadzało, spoj nie zaakceptował wersji z pętlą do ... while.

Pytanie: dlaczego?

0
Karol Bartoszewicz napisał(a):

w CodeBlocks wszystko się zgadzało, spoj nie zaakceptował wersji z pętlą do ... while.

Pytanie: dlaczego?

SPOJ nie napisał dlaczego? Przecież wyświetla komentarz czy czas za długi, czy niepoprawna odpowiedź itd. Sprawdź i będziesz miał odpowiedź na pytanie dlaczego.

0

Mówi, że błędna odpowiedź.
Dla podanego w zadaniu wejścia Ideone kompiluje poprawnie i podaje zgodne z przykładem wyjście.
Tu jest kod (uporządkowany tak jak w pierwszym poście. Różni się tylko końcówką.)

#include <iostream>

using namespace std;

int main()
{ int l_test;
cin>>l_test;

int ilu_uczestnikow, ciast_w_pud;

for (int i=0; i<l_test; i++)
{ cin>>ilu_uczestnikow>>ciast_w_pud;
int potrzeba_ciast = 0;

for (int i=1; i<=ilu_uczestnikow; i++)
{ int tempo_obzart;
cin>>tempo_obzart;
potrzeba_ciast += (86400/tempo_obzart);
}

int ile_pudelek = 0;

do (ile_pudelek++);
while (potrzeba_ciast>(ile_pudelek*ciast_w_pud));

` cout<<ile_pudelek<<endl; `
`}`

return 0;
}

0

wyrzuciłem do wile oraz dałem couta z mojego programu i działa, problemem było zaokrąglanie do pełnych pudełek.

#include <iostream>
#include <math.h>

using namespace std;

int main()
{ int l_test;
cin>>l_test;

int ilu_uczestnikow, ciast_w_pud;

for (int i=0; i<l_test; i++)
{ cin>>ilu_uczestnikow>>ciast_w_pud;
int potrzeba_ciast = 0;

for (int i=1; i<=ilu_uczestnikow; i++)
{ int tempo_obzart;
cin>>tempo_obzart;
potrzeba_ciast += (86400/tempo_obzart);
}

 cout << ceil(float(potrzeba_ciast) / float(ciast_w_pud)) << "\n";
}

return 0;
}
0

Dziękuję za pomoc. :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1