(Джерело: http://www.olymp.vinnica.ua/index_ua.php?lng=ua&cid=97)
Задача: Василько взяв великого циркуля та зайшов до кімнати, підлога якої являє собою квадрат зі стороною рівною M (M>1м). Поставивши циркуль на перетині діагоналей цього квадрата він почав будувати кола. Перше коло мало діаметр 10 см., друге – 30, трете – 40, четверте – 60, п’яте – 70, шосте – 90 см. і т.д. Скільки повних кіл може побудувати в цій кімнаті Василько?
Задача: Василько взяв великого циркуля та зайшов до кімнати, підлога якої являє собою квадрат зі стороною рівною M (M>1м). Поставивши циркуль на перетині діагоналей цього квадрата він почав будувати кола. Перше коло мало діаметр 10 см., друге – 30, трете – 40, четверте – 60, п’яте – 70, шосте – 90 см. і т.д. Скільки повних кіл може побудувати в цій кімнаті Василько?
Технічні умови. Програма зчитує з клавіатури ціле число M – довжину стіни кімнати в сантиметрах. Програма виводить на екран одне ціле число – кількість повних кіл, які можна тут побудувати.
Приклади:
Введення> 240
Виведення> 16
Введення> 380
Виведення> 25
Розв'язання
Переведемо послідовність радіусів в дециметри і запишемо викресливши зайві числа: 1, 2, 3, 4, 5, 6, 7, 8, 9, ... .
Бачимо, що послідовність утворена з ряду натуральних чисел виключенням чисел, які передують числам кратним 3.
Потрібно підрахувати кількість її членів. Рахуємо:
З викресленими від 1 до M їх буде M.
Викреслених від 1 до M - (M+1)\3, де \ - ціла частина.
(1+1)\3 - 0, (2+1)\3 - 1, (3+1)\3 - 1, (4+1)\3 - 1, (5+1)\3 - 2, ... .
Без викреслених: M - (M+1)\3.
Запишемо алгоритми мовами програмування.
Free Pascal:
Var M : Integer;
Begin
Read(M);
M := M div 10;
Write(M - (M+1) div 3);
End.
C++:
#include <iostream>
using namespace std;
int main()
{
int m;
cin >> m;
m = m/10;
cout << m - (m+1)/3;
}
Немає коментарів:
Дописати коментар