EGEsoll - сборник решений задач из ЕГЭ

Задача 3

Автомат получает на вход четырёхзначное число. По этому числу строится новое число по следующим правилам:

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

Назад