SPOJ - "błędna odpowiedź" w zadaniu o dzieleniu pizzy

0

Witam,

po raz n-ty proszę Was o pomoc :) Tym razem problem dotyczy zadania "dzielenie pizzy" http://pl.spoj.com/problems/MWP3_3D/.
Wyrzuca mi "błędna odpowiedź", a wprowadzone przeze mnie testy wyprowadzają poprawne wyniki. Brakuje mi pomysłu co jest nie tak.

Czy mógłby ktoś podać przykładowe wejście, które zostanie źle obliczone?
Być może ominęłam jakiś warunek, haczyk czy coś :P
Na wejściu jest postawiony warunek, że liczba osób to minimum 3, dlatego pominęłam sytuację, w której byłaby jedna osoba i 0 cięć.

Program może mi nie przejść czasowo, ale to już druga sprawa, chcę najpierw dociec co jest nie tak :)

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

using namespace std;
double zaokraglij(double liczba);

int main()
{
  int t,n;
  double obwod, niezaokraglona,a, ilosc;

  cin >> t;

  for (int i=0; i<t; i++)
  {
    cin >> a >> n;
    obwod = M_PI*a;

    if (n%2 == 0) 
     ilosc = n;
    else
     ilosc = 2*n;

    niezaokraglona = obwod/(ilosc/2);

    if (n%2 == 0) cout << zaokraglij(obwod/(ilosc)) << " " << ilosc/2 << endl;
    else cout << zaokraglij(obwod/(ilosc)) << " " << ilosc/2 << endl;
  }
}

double zaokraglij(double x)
{
  int y = x * 10000; 
  if (y % 10 >= 5) y += 10; 
  return (y / 10) * 0.001; 
}

Pozdrawiam.

3

Wyjście nie zawsze jest wypisywane z dokładnością 3 miejsc po przecinku, np. test 41 14 da na wyjściu "9.2". Polecam wypisywanie zaokrąglonego wyniku przy użyciu printf("%.3f", n);

1

Twoja wypisana liczba ciec moze byc z przecinkiem lub wypisana w formacie naukowym dla duzych liczb. Liczba powinna byc typu int, a wynik typu double. Wypisujac uzyj printf("%.3f %d", ...);.

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