Задача к ЕГЭ по информатике на тему «программирование – циклы, условия» №1

Укажите наибольшее десятичное число, при вводе которого на экране сначала напечатается 4  , а затем 10  .

--------------------------------------------------------------------------------- |Python              |C + +                         |P ascal                    | |--------------------|------------------------------|---------------------------| |x = int(input ())    |#include  <  iostream  >       |                           | |L = 0               |using namespace  std;         |var x,L, M  : integer;     | |M  = 0              |int main () {                  |begin                      | |while x > 0 :       |  int L,M, x;                 |  readln (x);              | |  L = L +  1        |  cin > > x;                  |  L  :=  0;M  :=  0;         | |                    |                              |                           | |  if (x%2 ) == 0 :  |  L =  0;M  = 0;              |  while x >  0 do begin    | |    M  = M  +  x%8  |  while (x > 0) {             |     L :=  L + 1;           | |  x = x∕∕8          |    L =  L + 1;               |     if (x mod  2) = 0 then | |print (L )          |    if (x%2  ==  0) {         |       M  := M  + x mod  8;| |print (M )          |       M  = M  + x%8;         |     x :=  x div 8;         | |                    |                              |                           | |                    |    }                         |  end;                     | |                    |    x =  x∕8;                 |  writeln (L);writeln (M  );| |                    |  }                           |end.                       | |                    |  cout < < L < < endl < < M  ;|                           | |                    |                              |                           | ----------------------}----------------------------------------------------------

Решение 1

Определимся, что подсчитывает каждая из переменных.

L  — считает количество цифр в числе в восьмеричной системе счисления (т.к. в конце цикла делим нацело на 8),

M  — сумма четных цифр числа в восьмеричной системе счисления.

По условию необходимо найти такое четырехзначное восьмеричное число, у которого сумма четных чисел равна 10, и при этом оно максимально.

Так как сумма четных цифр должна быть равна 10, представим 10 = 6 + 4  . Для получения максимального числа поставим 64 в конец числа, а на первые два места поставим два максимальных нечетных числа в восьмеричной сс, т.е. семерки.

Осталось перевести ответ в десятичную сс: 77648 = 408410

 

Решение 2

for i in range(1000000):
    x = i
    l, m = 0, 0
    while x > 0:
        l += 1
        if (x % 2) == 0:
            m += x % 8
        x //= 8
    if l == 4 and m == 10:
        print(i)

Ответ: 4084
Оцените статью
Я решу все!