Код#include <iostream>constexpr double bites_to_megabytes(double a) { return a / 8388608;}constexpr double megabytes_to_gigabytes(double a) { return a / 1024;}int main() { long long a; short type; bool is_correct = false; double answer; do { std::cin >> a; std::cout << "[1] Megabytes \n" << "[2] Gigabytes \n" << "Convert to [1] or [2]: "; std::cin >> type; if (type == 1 or type == 2) { is_correct = true; } else { std::cout << "Meh. Try to type again. \n" << std:: endl; } } while (!is_correct); switch (type) { case 1: answer = bites_to_megabytes(a); break; case 2: answer = megabytes_to_gigabytes(bites_to_megabytes(a)); break; } std::cout << "An answer of conversion is " << answer << std::endl; return 0;}
Кирилл-Анна1023
22.07.2020
1) 144 - это 12². Следующий квадрат - это 13²=169 и из 169 мы никак не получим за 4 вычитания двоек число 144. Поэтому последняя команда - это 1 (возведи в квадрат). 2) Теперь из 2 надо получить 12 не более, чем за 4 команды. Если 2 возвести в квадрат, получим 4 и этого мало, поэтому возведем 4 еще раз в квадрат, получив 16. Два подряд вычитания двоек как раз дадут 12. 3) Решение 1 (возведи в квадрат) - получаем 4 1 (возведи в квадрат) - получаем 16 2 (вычти 2) - получаем 14 2 (вычти 2) - получаем 12 1 (возведи в квадрат) - получаем 144
Вся информация в оперативной памяти теряется.