Укажите наибольшее натуральное трёхзначное число , при вводе которого будут напечатаны числа 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
187 +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 Апр 2024 в 10:43
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир