Рассмотрим натуральное число x. Требуется прибавить к нему минимальное возможное целое неотрицательное число y, чтобы двоичная запись получившегося числа x+y имела ровно k единиц. Формат ввода
Первая строка ввода содержит натуральное число x
Вторая строка ввода содержит натуральное число k
Формат вывода
Выведите минимальное возможное целое неотрицательное число y, такое, что двоичная запись числа x+y имеет ровно k единиц.
Пример входных и выходных данных
Ввод Вывод
20 3
4
#include <iostream>
int gg(int k, int p, double m)
{
p = (k >= p) ? p : p / k;
return (m * 2 * p);
}
int main()
{
int k, p;
double m;
std::cout << "Сколько котлет можно одновременно положить на сковороду ? ";
std::cin >> k;
std::cout << "Сколько минут жарится одна сторона котлеты ? ";
std::cin >> m;
std::cout << "Сколько котлет вы будете жарить ? ";
std::cin >> p;
std::cout << p << " котлет пожарятся с двух сторон минимум за " << gg(k, p, m) << " минут";
}
Математическая модель (а также программа; зависит от того, что понимать под этапом формализации).
В учебнике выделяют такие этапы решения задачи на компьютере:
Исходные данные (результат - словесная информационная модель)Формализация (математическая модель)Алгоритмизация (алгоритм)Программирование (программа)Отладка, тестирование (уточнение модели)Выполнение расчетов (получение результатов)Нормальные люди понимают, что после формализации информация должна быть представлена на формальном языке, таких языком может быть как математический, так и язык программирования.