Артур1807
?>

Напишите функцию fibBinet(n), которая будет вычислять Fn по формуле Бине, согласно которой Fn равно ближайшему целому для ϕn/√5, где ϕ=(1+√5)/2 – золотое сечение. Проверьте её для значения F77 (должно получиться fibBinet(77) = 5527939700884757

Информатика

Ответы

apioslk4533

Формула Бине:

Fn = \frac{(\frac{1 + \sqrt{5}}{2})^{n} - (\frac{1 - \sqrt{5}}{2})^{n}}{\sqrt{5}}

При работе с типом double имеет место быть некоторая погрешность. При больших числах относительная погрешность стремится к 0.

Код:

#include <iostream>#include <cmath>#define sqrt5 sqrt(5)#define   (1 + sqrt5)/2#define n (1 - sqrt5)/2long long fibBinet(int n) {    return (long long) round((pow(, n) - pow(n, n)) / sqrt5);}int main() {    long long binet77 = fibBinet(77);    std::cout << "fibBinet(77) = " << binet77 << " (5527939700884757)" << std::endl;    std::cout << "A = " << abs(5527939700884757ll - binet77) << std::endl;    std::cout << "B = " << 5527939700884757ll / binet77 << std::endl;    return 0;}
Напишите функцию fibBinet(n), которая будет вычислять Fn по формуле Бине, согласно которой Fn равно
Напишите функцию fibBinet(n), которая будет вычислять Fn по формуле Бине, согласно которой Fn равно
Алексеевич949
//PascalABC.NET
//Версия 3.3, сборка 1634 (14.02.2018)

begin
  var (cost, t, k) := (Arr(15, 70, 125, 230, 440), Arr(1, 5, 10, 20, 60), new integer[5]);
  var n := ReadInteger('n->');
  for var i := 4 downto 0 do
  begin
    k[i] := n div t[i];n := n mod t[i];
  end; 
  if k[0] * cost[0] >= cost[1] then begin k[0] := 0;inc(k[1]); end;
  if k[0] * cost[0] + k[1] * cost[1] >= cost[2] then 
  begin
    k[0] := 0;k[1] := 0;inc(k[2]); 
  end;
  if k[0] * cost[0] + k[1] * cost[1] + k[2] * cost[2] >= cost[3] then 
  begin
    k[0] := 0;k[1] := 0;k[2] := 0;inc(k[3]);
  end;
  if k[0] * cost[0] + k[1] * cost[1] + k[2] * cost[2] + k[3] * cost[3] >= cost[4] then 
  begin
    k[0] := 0;k[1] := 0;k[2] := 0;k[3] := 0;inc(k[4]); 
  end;
  
  for var i := 0 to 4 do WritelnFormat('{0} билет(ов)- {1} штук(а)', t[i], k[i]);
end.

Пример(1):
n-> 37
1 билет(ов)- 0 штук(а)
5 билет(ов)- 0 штук(а)
10 билет(ов)- 0 штук(а)
20 билет(ов)- 0 штук(а)
60 билет(ов)- 1 штук(а)

Пример(2):
n-> 35
1 билет(ов)- 0 штук(а)
5 билет(ов)- 1 штук(а)
10 билет(ов)- 1 штук(а)
20 билет(ов)- 1 штук(а)
60 билет(ов)- 0 штук(а)
Kashtanov Anna

Скорее всего большое приемущество обработки данных с электронных  таблиц  в том ,что при такой обработке  допущение ошибки минимально (  это уже зависит от человека ,где он неправильно ввёл данные ) . Если же обрабатывать таблицу вручную ,то верояность допущения ошибок велика!
Так же преимущество  в том ,что при обработке информации при таблицы  намного быстрее проходит этот процесс ,нежеле ты сама  будешь всё  проверять .
Ну и конечно же  люди сейчас настолько ленивы ,чтобы самостоятельно обрабатывать какую-либо информацию, поэтому мы всё доверяем исскуственному разуму:) 

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

Напишите функцию fibBinet(n), которая будет вычислять Fn по формуле Бине, согласно которой Fn равно ближайшему целому для ϕn/√5, где ϕ=(1+√5)/2 – золотое сечение. Проверьте её для значения F77 (должно получиться fibBinet(77) = 5527939700884757
Ваше имя (никнейм)*
Email*
Комментарий*

Популярные вопросы в разделе

victoriadan
mouse-0211fsb3509
svetavancevich
Chistova-Dmitrii1162
fashbymsk
tanu0618
ortopediya
citioil15
sergei-pletenev
gusrva3001
oserdyuk41
Ligacom
Хачатурович978
sergeyshuvalov
yugraspets