Укажите наибольшее натуральное трёхзначное число , при вводе которого будут напечатаны числа 1 и 2. #include int main() { int x, a = 0, b = 0; std::cin >> x; while (x > 0) { if (x % 8 % 3 > 1) a++; if (x % 8 % 3 < 1) b++; x /= 8; } std::cout << a << " " << b; } Что делает код, в принципе, понятно. Хотелось б алгоритм решения подобного для подбора числа.

29 Июл 2020 в 19:42
169 +1
1
Ответы
1

Для нахождения наибольшего натурального трехзначного числа, которое при вводе будет напечатано число 1 и 2, можно просто перебирать трехзначные числа с начала и проверять условие.

В данном случае, можно начать с самого большого трехзначного числа - 999 и уменьшать его на 1, пока не найдется число соответствующее условию.

Таким образом, программа может выглядеть примерно так:

#include <iostream>
int main() {
int x, a = 0, b = 0;
for (int i = 999; i >= 100; i--) {
x = i;
while (x > 0) {
if (x % 8 % 3 > 1) a++;
if (x % 8 % 3 < 1) b++;
x /= 8;
}
if (a == 1 && b == 2) {
std::cout << i << std::endl;
break;
}
a = 0;
b = 0;
}
return 0;
}

Этот код будет перебирать трехзначные числа в обратном порядке и находить первое число, при вводе которого будет напечатаны числа 1 и 2.

18 Апр в 10:43
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 648 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир