Drzewko - błąd

0

Ma zadanie Drzewko na main.edu.pl http://main.edu.pl/pl/archive/ilocamp/2011/dze

Rozwiązałem je tak że przy małych danych działa idealnie lecz przy wpisaniu wartości potężnych wynik różni się od tego z przydatnych zasobów :(.

Przykład :

Wpiszę 32 5
Wynik: 31 //poprawnie

Wpiszę 65 5
Wynik: 0 //poprawnie

Wpiszę 337891 13
Wynik: 4095 //niepoprawny, powinno być 2300

Co może być tego powodem ? :o

Wiem że powinienem podać rozwiązanie, ale może znacie rozwiązanie i możecie wiedzieć co jest tego powodem. :P

0

i możecie wiedzieć co jest tego powodem.

Linijka 666 z pliku /dev/null.

0

Hah i pcmfksz. TU się mylisz bo kod jest napisany w Java.

0

No to /dev/urandom ;)

0

Twoje odpowiedzi się bardzo przydadzą tym bardziej że korzystam z kompilatora online.
Z drugiej strony to co mi pokazujesz tak na prawdę nie ma sensu, czyli w skrócie mówiąc naśmiewasz się ze mnie ^^.

Podpowiedzi nie uzyskałem i trudno trza sobie w życiu radzić samemu :p.

0

@Uczciwy odpowiedzi nie uzyskasz bo niby skad mamy wiedzieć gdzie jest błąd w algorytmie którego nie widzimy? o_O Ja jestem calkiem dobrym koderem, ale nie potrafię jeszcze na podstawie zadania i przykładowej blędnej odpowiedzi wymyślić jaki błędny algorytm ktoś mógł napisać. Może kiedyś, ale nie dziś.

0

Już zrobiłem, po prostu zapomniałem przypisać metodę ceil.

ceil(cos/s)
a powinno być
cos =ceil(cos/2)

Następnym razem jak będę potrzebował pomocy będę wklejał urywki kodu ^^

0

rozwiązanie 100/100:

#include <cstdio>

using namespace std;

typedef unsigned int uint;

uint reverseBits(uint n, uint h)
{
  uint ret = 0;
  while (h--)
  {
    ret <<= 1;
    ret |= n & 1;
    n >>= 1;
  }
  return ret;
}

int main()
{
  uint n, h;
  scanf("%u%u", &n, &h);
  printf("%u\n", reverseBits(n - 1, h));
  return 0;
}

wystarczy odwrócić bity liczby n-1 w postaci h-bitowej

0

Też mam 100/100 ^^ innym sposobem :p.

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