[SPOJ] Problem z zadaniem: Średnia arytmetyczna
Ostatnio zmodyfikowano 2012-01-11 21:04
jsc Temat założony przez niniejszego użytkownika |
[SPOJ] Problem z zadaniem: Średnia arytmetyczna » 2012-01-11 18:03:27 Treść zadania brzmi: W tablicy n liczb całkowitych dodatnich znajdź tę, której wartość jest najbliższa warości średniej z wszystkich liczb. Input Najpierw t - liczba testów. W kolejnych liniach, dla każdego testu, liczba n<100 i n liczb całkowitych dodatnich nie większych niż 100. Output Dla każdego testu, w kolejnych liniach, jedna liczba - pierwszy element tablicy, którego wartość jest najbliższa wartości średniej. W odpowiedzi napisałem o to program: #include <iostream> #include <vector> #include <cmath>
using namespace std;
typedef int kontrolna;
typedef int liczba;
int main() { kontrolna iloscTestow; kontrolna ktoryTest; cin >> iloscTestow; for( ktoryTest = 0; ktoryTest != iloscTestow; ktoryTest++ ) { kontrolna iloscLiczb; cin >> iloscLiczb; vector < liczba > tablica; liczba sumaLiczb = 0; liczba biezaca; for( liczba ktoraLiczba = 0; ktoraLiczba < iloscLiczb; ++ktoraLiczba ) { cin >> biezaca; tablica.push_back( biezaca ); sumaLiczb = sumaLiczb + biezaca; } float sredniaLiczb = static_cast < float >( sumaLiczb ) / iloscLiczb; liczba znanaLiczbaPrzyblizajaca = tablica[ 0 ]; if( floor(( abs( znanaLiczbaPrzyblizajaca - sredniaLiczb ) ) ) != 0 ) { for( vector < liczba >::iterator jakaLiczba = tablica.begin(); jakaLiczba < tablica.end(); ++jakaLiczba ) { if( abs( sredniaLiczb - * jakaLiczba ) < abs( sredniaLiczb - znanaLiczbaPrzyblizajaca ) ) { znanaLiczbaPrzyblizajaca = * jakaLiczba; if( floor( abs( znanaLiczbaPrzyblizajaca - sredniaLiczb ) ) == 0 ) { break; } } } } cout << znanaLiczbaPrzyblizajaca << endl; } return 0; }
Według moich testów program jest prawidłowy, a sędzia odrzuca go ze względu na złe wyniki. |
|
pekfos |
» 2012-01-11 20:36:13 Złe testy pewnie. Btw: typedef int kontrolna; typedef int liczba; Po co utrudniać sobie życie? |
|
jsc Temat założony przez niniejszego użytkownika |
» 2012-01-11 20:54:16 Jeśli się czepiasz testów to masz: Wejście: 4 4 1 2 3 4 4 4 3 2 1 6 2 7 8 3 1 3 5 1 2 4 7 9
|
Wyjście |
|
pekfos |
» 2012-01-11 21:00:17 tak pobieżnie patrząc zauważyłem że zaokrąglasz przez floor(). zmień na round(). |
|
DejaVu |
» 2012-01-11 21:00:52 Ale skompilowałeś ten program :P |
|
jsc Temat założony przez niniejszego użytkownika |
» 2012-01-11 21:04:38 tak pobieżnie patrząc zauważyłem że zaokrąglasz przez floor(). zmień na round(). |
A rzeczywiście... |
|
« 1 » |