(Джерело: http://www.olymp.vinnica.ua/index_ua.php?lng=ua&cid=101)
Задача. Черв’ячки - цікаві тваринки. Якщо їх залишити вдвох і не турбувати, то через 10 хвилин їх стане четверо, через 20 хвилин – восьмеро, через 30 хвилин – 16 штук. Скільки їх стане через N (N>1) хвилин? Зауваження: на появу нових черв’ячків потрібно рівно 10 хвилин. Всі нові черв’ячки появляються одночасно.
Технічні умови. Програма зчитує з клавіатури ціле число N – кількість хвилин. Програма виводить на екран одне ціле число – кількість черв’ячків через вказаний час.
Приклади.
Введення> 5
Виведення> 2
Введення> 48
Виведення> 32
Розв'язання
Запишемо відповідність:
0 хвилин - 2 черв'ячки, 10 - 4, 20 - 8, 30 - 16, ...
Так як в інтервалах: [0, 10), [10, 20), [20, 30), [30, 40), ... кількість черв'якчків не змінюється то поділивши хвилини на 10 і кількість черв'ячків подавши у вигляді степенів(^) двійки отримаємо нову відповідність: 0 хв. - 21 черв., 1 - 22, 2 - 23, 3 - 24, ... Бачимо що: [N/10] хвилин - 2N+1 черв'ячків, де [] - ціла частина.
Запишемо алгоритми мовами програмування.
Free Pascal:
Var N : Integer;
Begin
Read (N);
Write (Round(Exp((N div 10 + 1)*ln(2))));
End.
Begin
Read (N);
Write (Round(Exp((N div 10 + 1)*ln(2))));
End.
Примітка: в Pascal відсутня функція степеня, тому степінь подано через властивості логарифмів.
C++:
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int n;
cin >> n;
cout << pow(2.0,n/10+1);
}
#include <cmath>
using namespace std;
int main()
{
int n;
cin >> n;
cout << pow(2.0,n/10+1);
}
Немає коментарів:
Дописати коментар