М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
JSG111
JSG111
12.06.2021 19:34 •  Информатика

Головоломка “Ханойские башни” состоит из трех стержней, пронумерованных числами 1, 2, 3. На стержень 1 надета пирамидка из n дисков различного диаметра в порядке возрастания диаметра. Диски можно перекладывать с одного стержня на другой по одному, при этом диск нельзя класть на диск меньшего диаметра. Необходимо переложить всю пирамидку со стержня 1 на стержень 3 за минимальное число перекладываний.

Напишите программу, которая решает головоломку; для данного числа дисков n печатает последовательность перекладываний в формате a b c, где a — номер перекладываемого диска, b — номер стержня с которого снимается данный диск, c — номер стержня на который надевается данный диск.

Например, строка 1 2 3 означает перемещение диска номер 1 со стержня 2 на стержень 3. В одной строке печатается одна команда. Диски пронумерованы числами от 1 до n в порядке возрастания диаметров.

Программа должна вывести минимальный (по количеству произведенных операций перекладывания пирамидки из данного числа дисков.
На питоне

👇
Открыть все ответы
Ответ:
Cat4ik
Cat4ik
12.06.2021
//Вот программа, которая кодирует слова в системах счисления от 2 до 10
//Первый ввод - число, второй - система счисления
//Pascal ABC.NET v3.0

var
 a,i,b,r,n,j,bug:integer;
 s,se,slo,slof:string;

procedure preob(var a,b,n:integer; var se:string);
 begin
  repeat
   b:=a mod n;
   a:=a div n;
   str(b,se);
   s+=se;
  until (a<=n-1);
 end;

begin
readln(slo);
readln(n);
for j:=1 to length(slo) do
begin;
a:=ord(slo[j]);
preob(a,b,n,se);
str(a,se);
s+=se;
for i:=1 to length(s) div 2 do
begin;
se:=s[i];
s[i]:=s[length(s)-i+1];
s[length(s)-i+1]:=se[1];
end;
write(s,'-');
slof:=slof+s;
delete(s,1,length(s));
end;
end.

//Слово Программа она кодирует как 11001111-11110000-11101110-11100011-11110000-11100000-11101100-11101100-11100000-
4,7(55 оценок)
Ответ:
marinka0810
marinka0810
12.06.2021
Итак, за 2 минуты можно передать файл размером 5000 кБайт. Так как результат тоже должен быть в кБайтах, то мы можем не переводить в байты. Но так как сначала даны минуты, а потом секунды, то либо мы сначала переводим минуты в секунды, либо секунды в минуты.

Чтобы найти скорость передачи файла, нужно количество кБайт(S) разделить на время, за которое этот файл передался. Так как последующий файл отправляется по тому же соединению, то их скорости равны. Значит нужно некоторое x разделить на 48 секунд (или минут, если ты перевёл(ела) в минуты).

5000/120=х/48
120х=240000
х=2000

Или, если ты перевёл в минуты, то
5000/2=х/0,8
2х=4000
х=2000
ответ: 2000
4,4(48 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ