[PASCAL] Proste dzialanie

0

Jak mając coś takiego

      if (liczba and 1)=1 then
      begin
      Inc(liczba);
      x:=((liczba shr 1)*(liczba-1));
      end
      else
      x:=((liczba shr 1)*(liczba+1));

Wyliczyć liczbę na odwrót, tj. mając x wyliczyć liczba :/

0

czysta matematyka, można to tak zapisać po ludzku:

dla liczb parzystych
x = ((liczba - 1) / 2) * (liczba + 1)
czyli 0,5 * liczba^2 - 0,5

dla liczb nieparzystych
x = (liczba / 2) * liczba
czyli 0,5 * liczba^2

żeby wyliczyć liczba musisz założyć chyba czy ma ona być parzysta czy nie i wykonać odpowiednie działanie

ale rozwiązanie dla większości przypadków to po prostu:

liczba := round(sqrt(2*x));

(czyli zaokrąglony pierwiastek z dwóch x)

0

To zadanie nie ma jednoznacznego rozwiązania. no chyba że założymy że liczba >=0.
A obliczyc mozna tak:
obliczamy sqrt(2x+1) jesli to jest liczba całokowita to to jest rozwiazanie w przeciwnym przypadku rozwiązując równanie kwadratowe otrzymujemy rozwiązanie ujemne (-1-sqrt(1+8x))/2 i rozwiązanie nieujemne (-1+sqrt(1+8*x))/2. I koniec chyba:)

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