пʼятниця, 20 лютого 2015 р.

Worms

(Джерело: 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.
Примітка: в Pascal відсутня функція степеня, тому степінь подано через властивості логарифмів.

C++:
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
  int n;
  cin >> n;
  cout << pow(2.0,n/10+1);
}

Немає коментарів:

Дописати коментар