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 :/
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 :/
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)
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:)