Укажите наибольшее натуральное трёхзначное число , при вводе которого будут напечатаны числа 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; } Что делает код, в принципе, понятно. Хотелось б алгоритм решения подобного для подбора числа.
Для нахождения наибольшего натурального трехзначного числа, которое при вводе будет напечатано число 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.
Для нахождения наибольшего натурального трехзначного числа, которое при вводе будет напечатано число 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.