C/C++

Пожалуйста дайте точный код (решение задачи).

Игорь на уроках любит писать записки. Сегодня он написал записку на листочке размером x×y сантиметров. Чтобы учитель не заметил записку, он хочет сложить ее так, чтобы ее размер был не больше 1×1 сантиметр. Для этого он может складывать бумагу несколько раз, каждый раз он сгибает записку вдоль прямой, параллельной одной из сторон листка.

Помогите Игорю узнать, сколько раз ему нужно сложить лист бумаги, чтобы учительница его не заметила.
Nikolai Fironov
Nikolai Fironov
163
не больше 6, иначе толщина не даст сложить бумагу пополам.
Обратное решение
2*1
2*2
2*4
4*4
8*4
8*8
Если листок больше чем 8*8, сложить его в 1*1 нельзя
АК
Александр Калинин
35 043
Лучший ответ
n=ceil(log2(x))+ceil(log2(y));

Запиши это на своем любимом ЯП и адью.
Фархад Бакиев
Фархад Бакиев
53 891
# Вводим размеры листка бумаги в сантиметрах
x = int(input("Введите длину листка: "))
y = int(input("Введите ширину листка: "))

# Инициализируем счетчик количества сложений
count = 0

# Пока размеры листка больше 1 см, складываем его пополам
while x > 1 or y > 1:
# Если длина больше ширины, то складываем по длине
if x > y:
x = x // 2 # Делим длину на 2 и округляем вниз
# Иначе складываем по ширине
else:
y = y // 2 # Делим ширину на 2 и округляем вниз
# Увеличиваем счетчик на 1
count += 1

# Выводим результат
print("Игорю нужно сложить листок", count, "раз.")
ХС
Хочу Страпон
30 348
#include <iostream>
#include <cmath>

using namespace std;

int main() {
double x, y;
cout << "Введите размеры листа в сантиметрах (x y): ";
cin >> x >> y;

int count = 0;
while (x > 1 || y > 1) {
if (x > y) {
x /= 2;
} else {
y /= 2;
}
count++;
}

cout << "Необходимо сложить лист " << count << " раз(а), чтобы размер был не больше 1x1 см." << endl;

return 0;
}