Автомат получает на вход четырёхзначное число. По этому числу строится новое число по следующим правилам:
1. Складываются отдельно первая и вторая цифры, вторая и третья цифры, а также третья и четвёртая цифры.
2. Из полученных трёх чисел выбираются два наибольших и записываются друг за другом в порядке неубывания без разделителей.
Пример. Исходное число: 9575. Суммы: 9 + 5 = 14; 5 + 7 = 12; 7 + 5 = 12. Наибольшие суммы: 14, 12. Результат: 1214.
Найдите такое исходное число, при котором результат программы равен 1418.
Добавлено: 03.04.26 11:11
Приведем решение на Python:
for x in range(1000, 10000):
r = []
r.append(int(str(x)[0]) + int(str(x)[1]))
r.append(int(str(x)[1]) + int(str(x)[2]))
r.append(int(str(x)[2]) + int(str(x)[3]))
r = sorted(r)
n = int("".join(map(str, r[-2:])))
if n == 1418:
print(x) # 1599
breakОтвет: 1599
ПЕРВОАПРЕЛЬСКОЕ ОБНОВЛЕНИЕ!
Решение на C++:
#include <algorithm>
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main() {
for (int n{1000}; n < 10000; n++) {
string t = to_string(n);
int s1 = (t[0] - '0') + (t[1] - '0');
int s2 = (t[1] - '0') + (t[2] - '0');
int s3 = (t[2] - '0') + (t[3] - '0');
vector<int> v{s1, s2, s3};
int m1 = *max_element(v.begin(), v.end());
v.erase(find(v.begin(), v.end(), m1));
int m2 = *max_element(v.begin(), v.end());
int r = stoi(to_string(m2) + to_string(m1));
if (r == 1418) {
cout << n << "\n";
break;
}
}
return 0;
}Автор - rubygem17
None