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

Ниже на трёх языках программирования записана программа, которая получает на вход натуральное число x  , выполняет преобразования, а затем выводит два числа. Сколько существует таких x  , при вводе которых программа выведет числа        9  и 72  ?

--------------------------------------------------------------------------------------------------- |                     |                                          |                                | |P-ython--------------|C-+-+-------------------------------------|P-ascal-------------------------| |x  =  int(input ())    |#include  < iostream  >                   |var x, a, b, d : integer;        | |                     |                                          |                                | |a  = 0               |using namespace  std;                     |begin                           | |b =  0               |int main ()                                |     readln (x);                | |                     |                                          |                                | |while x > 0 :        |{                                         |     a := 0;                    | |      a + =  1       |     int x, a, b, d;                      |     b := 0;                    | |                     |                                          |                                | |      d =  x%10      |     cin > >  x;                          |     while x >  0 do begin      | |      if d%3  ==  0 : |     a =  0;                              |           a :=  a + 1;          | |                     |                                          |                                | |           b + =  d  |     b =  0;                              |           d :=  x mod 10;       | |      x ∕ ∕ = 10     |     while (x > 0)                        |           if d mod 3 =  0 then | |                     |                                          |                                | |print(a,b)           |     {                                    |                b :=  b + d;     | |                     |          +  + a;                         |           x :=  x div 10;        | |                     |                                          |                                | |                     |          d  =  x%10;                     |     end;                       | |                     |          if (d%3  ==  0)                 |     writeln (a, ′ ′, b);        | |                     |                                          |                                | |                     |                b + =  d;                 |end.                            | |                     |          x ∕ =  10;                      |                                | |                     |                                          |                                | |                     |     }                                    |                                | |                     |     cout < <  a < <  ′ ′ << b < <  endl; |                                | |                     |                                          |                                | |                     |     return 0;                            |                                | |                     |}                                         |                                | ---------------------------------------------------------------------------------------------------

Проанализируем программу. Переменная a  равна количеству всех цифр числа x  . Переменная b  равна сумме всех цифр числа x  , которые кратны 3  . Теперь комбинаторно посчитаем количество всех девятизначных чисел, у которых сумма цифр, кратных 3  , равна 72  . Заметим, что в числе не может быть более восьми девяток, иначе сумма цифр, кратных трём, будет большле 72  . Тогда будем считать количество чисел путём уменьшения количества девяток.

1) Восемь девяток, в числе не содержится ноль. Если в числе восемь девяток, значит сумму цифр, кратных трём, равную 72  , мы уже набрали. Тогда оставшаяся девятая цифра может быть любой из шести цифр, некратных трём: 1,2,4,5,7,8  . Количество таких чисел равно 9 ⋅6 = 54  (поставить 6  цифр, некратных 3  , на любую из 9  позиций)

2) Восемь девяток и ноль. Количество таких чисел равно 8  (поставить ноль на любую из восьми позиций кроме первой, потому что число не может начинаться с нуля)

3) Семь девяток, шестёрка и тройка. Количество таких чисел равно 9 ⋅8 = 72  (девять вариантов поставить на любое из девяти мест тройку и восемь вариантов поставить на одно из оставшихся восьми мест шестёрку)

4) Шесть девяток и три шестёрки. Количество таких чисел равно  3 C9 = 84  (количество способов поставить три шестёрки на любое из девяти мест)

Тогда ответ будет равен 54+ 8 + 72+ 84 = 218

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