146. Квадраты – 2

 

В белом квадрате n раз выполнили одну и ту же операцию: один из наименьших белых квадратов разбили на 4 одинаковых квадрата и 2 из них закрасили черным цветом. Для заданного n вычислите, сколько процентов занимает площадь черной фигуры.

 

Вход. Одно число n (1 ≤ n ≤ 100).

 

Выход. Выведите площадь черной фигуры в процентах, округленную до 5 десятичных знаков.

 

Пример входа

Пример выхода

1

50.0

 

 

РЕШЕНИЕ

математика

 

Анализ алгоритма

Пусть изначально длина стороны квадрата равна side = 1. После выполнения операции первый раз получим 4 квадрата с длиной стороны side = side / 2 = 1/2, два из которых следует закрасить черным цветом. То есть площадь этих двух черных квадратов составит 2 * side * side = 0.5, где side = 1/2.

Во второй операции делим квадрат со стороной side = 1/2 на 4 части. Длина стороны каждого из 4 квадратов равна side = 1/4, черным будет закрашена площадь 2 * side * side = 0.125.

Суммируем закрашенную черным на каждой итерации площадь.

Поскольку в ответе следует вывести количество процентов, то найденную площадь следует умножить на 100.

 

Реализация алгоритма

Читаем значение n.

 

scanf("%d", &n);

 

Изначально площадь черной части равна area = 0. Длину стороны квадрата положим равной side = 1.

 

area = 0; side = 1;

 

На каждой итерации длина стороны side меньшего квадрата уменьшается вдвое. Черным цветом будет краситься площадь равная 2 * side * side.

 

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

{

  side /= 2;

  area += 2 * side * side;

}

 

Выводим ответ.

 

printf("%.5lf\n", area * 100);

 

Python реализация

Читаем значение n.

 

n = int(input())

 

Изначально площадь черной части равна area = 0. Длину стороны квадрата положим равной side = 1.

 

area = 0

side = 1

 

На каждой итерации длина стороны side меньшего квадрата уменьшается вдвое. Черным цветом будет краситься площадь равная 2 * side * side.

 

for i in range(n):

  side /= 2

  area += 2 * side * side

 

Выводим ответ.

 

print(area * 100)