Пожалуйста, помогите разобраться с заданием!!

0 голосов
26 просмотров

Пожалуйста, помогите разобраться с заданием!!


image

Информатика (64 баллов) | 26 просмотров
Дано ответов: 2
0 голосов
Правильный ответ

Чтобы понять алгоритм, немного переделаем программу.

a:=0; b:=1;
while x>0 do begin
  d:=x mod 6;
  if x mod 2>0 then a:=a+d { х - нечетное }
  else b:=b+d; {х - четное }
  x:=x div 6
end;
Writeln(a,' ',b)

Обратим внимание на условие выполнения цикла.

while x>0 do begin
  d:=x mod 6;
  { тут что-то делаем }
  x:=x div 6
end;

Число х последовательно делится нацело на 6 до тех пор, пока оно не превратится в ноль. И на каждом шаге находится остаток от такого деления. Мысленно заменим 6 на 10. Узнаёте алгоритм? Это получение десятичных цифр d, начиная с младшего разряда. А если у нас не 10, а 6 - то получение цифр числа по основанию 6. Другими словами, тут происходит перевод числа в шестеричную систему счисления.

А что же делается с полученными шестеричными цифрами?

if x mod 2>0 then a:=a+d { х - нечетное }
else b:=b+d; {х - четное }

В переменной a накапливается сумма нечетных шестеричных цифр, в переменной b - сумма четных цифр.
По условию a=2, 2 - число четное и единственный способ получить его в виде суммы нечетных чисел - это 2 = 1+1.
Теперь мы знаем, что шестеричное представление искомого числа содержит две нечетные цифры и обе они равны 1.
По условию b=9, но начальное значение b=1, поэтому сумма четных шестеричных цифр равна 9-1, т.е. 8.
Четные шестеричные цифры - это 0, 2 и 4. Поскольку поставлена задача найти минимальное число, оно должно содержать минимальное количество разрядов. 8 = 4+4 - это еще две шестеричный цифры искомого числа. Теперь мы можем его записать: 1144₆
Осталось перевести его в десятичную систему: 1144₆=1×6³+1×6²+4×6¹+4×6⁰ = 216+36+24+4 = 280

Ответ: 280

(150k баллов)
0 голосов

Я правда не понял смысл преобразований в этом алгоритме, поэтому поместил его в цикл от 100 до 999 (все трёхзначные числа). Вместо ввода числа, оно передавалось из переменной цикла.
И сделал выход из программы по условию a=2 и b=9.
После выполнения этой программы, в конце лога можно увидеть искомое трёхзначное натуральное число 280 (точнее, в последней строке будет напечатано 280 2 9 ).

Вот программа:
var
  n, x, a, b: longint;

begin
  for n := 100 to 999 do
  begin
    write(n,' ');
    x := n;
    a := 0; b := 1;
    while x > 0 do 
    begin
      if x mod 2 > 0 then
        a := a + x mod 6
      else
        b := b + (x mod 6);
      x := x div 6;
    end;
    writeln(a,' ',b);
    if (a=2) and (b=9) then exit;
  end;
end.

(5.3k баллов)
0

Смысл таких задач в том, чтобы найти решение без компьютера. Подобные задания есть в ЕГЭ, а он сдается при помощи листика бумаги и ручки.

0

Я не знал, думал что решение на компьютере тут допустимо

0

Я лишь высказал свое мнение. Допустимо решение программным путем или нет - это уж пусть автор вопроса решает, не так ли?

0

Да, видимо так