Предмет: Информатика, автор: odmdojnn

укажите минимально возможное x, при котором программа выведет 5 и 12​

Приложения:

Ответы

Автор ответа: MrSolution
2

Ответ:

(см. объяснение)

Объяснение:

Pascal:

var x, m, s, d: integer;

begin

 for i: integer := 1 to 150 do

 begin

   x:= i;

   m:= 0;

   s:= 0;

   while(x>0) do

   begin

     d:= x mod 7;

     s:= s+d;

     if(d>m) then

       m:= d;

     x:= x div 7;

   end;

   if((m=5) and (s=12)) then

     writeln(i);

 end;

end.

Python:

for i in range(1, 150):

   x = i

   m = s = 0

   while x > 0:

       d = x % 7

       s += d

       if d > m:

           m = d

       x //= 7

   if m == 5 and s == 12:

       print(i)

Аналитическое решение:

Перейдем в семеричную систему счисления. Тогда операция mod 7 будет получать последнюю цифру исходного числа. Заметим также, что в переменную m кладется максимальная цифра из введенного числа. Тогда нам нужно, чтобы цифра 5 стояла в разряде единиц и была наибольшей в числе. Понятно, что двузначное число, удовлетворяющее этим условиям, собрать нельзя. Предположим, что число трехзначное, начинающееся на 1. Тогда оно имеет вид 1?5, где ?≤5. Но 1+5+5<12, поэтому такой случай никогда не приведет к интересующему ответу. Пусть число имеет вид 2?5. Тогда 2+5+5=12, то есть число 255 нас устраивает. Переведя его в десятичную систему счисления, получаем, что ответом будет число 138.

Задание выполнено!

Похожие вопросы
Предмет: Қазақ тiлi, автор: amadei001