Сергеевна
?>

Вася изучал сегодня на информатике тему "рекурсия". после урока на доске осталась такая функция (для условия на языке pascal — процедура): на языке python: def f(n): print('*') if n > 2: f(n - 1) f(n - 2) на языке pascal: procedure f(n: longint); begin writeln('*'); if n > 2 then begin f(n - 1); f(n - 2); end; end; на языке c++: int f(int n){ cout < < '*' < < endl; if (n > 2){ f(n - 1); f(n - 2); } } вася задумался над таким вопросом — а какое наименьшее натуральное число нужно поставить вместо n в вызов этой функции, чтобы было напечатано не меньше 5000 звездочек? ему узнать ответ на этот вопрос. в качестве ответа укажите одно натуральное число.

Информатика

Ответы

kostmax1971
Очевидно что звездочек
f(1) = 1
f(2) = 1
f(3) = 1 + f(2) + f(1)

f(n) = 1 + f(n-1) + f(n-2)

Посчитаем на хаскеле f(n) при n=[1,2..20]
--Код haskell
f(1) = 1
f(2) = 1
f(n) = 1 + f(n-1) + f(n-2)
main = print(show [(n, f(n)) | n <- [1,2..20]])

Вывод
(1,1),(2,1),(3,3),(4,5),(5,9),(6,15),(7,25),(8,41),(9,67),(10,109),(11,177),(12,287),(13,465),(14,753),(15,1219),(16,1973),(17,3193),(18,5167),(19,8361),(20,13529)

значит при f(18) = 5167  - т0 что надо

ответ 18
bugaevnicky

1. Выпишем двоичные числа от 128 до 131:

128₁₀ = 10000000₂

129₁₀ = 10000001₂

130₁₀ = 10000010₂

131₁₀ = 10000011₂

Наибольшим числом с двумя единицами в записи является 130

2. Для начала необходимо узнать вес изображения:

Расчёт делается по двум формулам. V = i × k, где V - вес изображения, i - глубина цвета, k - количество пикселей в изображении. N = 2^i, где N - количество цветов в изображении.

Узнаем глубину цвета: 32 = 2^i, i = 5 бит.

Узнаем количество пикселей в изображении: 800 × 600 = 480000

Узнаем вес изображения: 480000 × 5 = 2400000 бит

Теперь мы можем узнать, сколько секунд потребуется для передачи этого изображения:

2400000 ÷ 32000 = 75 секунд

карпова581

#include <iostream>

#include <vector>

#include <cmath>

using namespace std;

struct river{

   string name;

   double length;

   double depth;

   bool ships;

};

signed main(){

   int n;

   cin >> n;

   river a[n];

   for(int i = 0; i < n; i++)

       cin >> a[i].name >> a[i].length >> a[i].depth >> a[i].ships;

   vector<river> ans;

   for(auto i: a)

       if(i.length > 2 && i.ships)

           ans.push_back(i);

   for(auto i: ans){

       cout << "name: " << i.name << "\n";

       cout << "length: " << i.length << "\n";

       cout << "depth: " << i.depth << "\n";

       cout << "ships?: Yes";

   }

}

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

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

Вася изучал сегодня на информатике тему "рекурсия". после урока на доске осталась такая функция (для условия на языке pascal — процедура): на языке python: def f(n): print('*') if n > 2: f(n - 1) f(n - 2) на языке pascal: procedure f(n: longint); begin writeln('*'); if n > 2 then begin f(n - 1); f(n - 2); end; end; на языке c++: int f(int n){ cout < < '*' < < endl; if (n > 2){ f(n - 1); f(n - 2); } } вася задумался над таким вопросом — а какое наименьшее натуральное число нужно поставить вместо n в вызов этой функции, чтобы было напечатано не меньше 5000 звездочек? ему узнать ответ на этот вопрос. в качестве ответа укажите одно натуральное число.
Ваше имя (никнейм)*
Email*
Комментарий*

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

Rjkjneirbyf555
kim-1971
Femida76
vickuznetsova8677
Сопова
AnzhelikaSlabii1705
taanaami75
anna-leonova
myatadinamo
mrFuz
rinan2013
Adabir20156806
Салиев
natanikulina1735
Olga Arutyunyan