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

Циклические башни

На дорогах Ханоя было введено одностороннее круговое движение, поэтому теперь диск со стержня 1 можно перекладывать только на стержень 2, со стержня 2 — на 3, а со стержня 3 — на 1.

Решите головоломку с учётом этих ограничений. Вам не нужно находить минимальное решение, но количество совершённых перемещений не должно быть больше 200000 при условии, что количество дисков не превосходит 10.

Входные данные

Задано натуральное число n≤10 — размер пирамидки.

Выходные данные

Программа должна вывести перекладывания пирамидки из данного числа дисков со стержня 1 на стержень 3.

👇
Открыть все ответы
Ответ:
настя51001
настя51001
03.05.2023
#include <iostream>
using namespace std;
double val, p;
//вводимые параметры значения функции и степень полинома
//x - значение функции
//res - значение, которое изменяется в процессе рекурсии по схеме Горнера
//s - рассматриваемая текущая степень x
double rec(double x, double res, double s) 
{
  if (s == 0.0)
    return res;
  return rec(x, x * res + s - 1, s - 1);
}
int main(){
  cin >> val >> p;
  //старший коэффициент в схеме Горнера сначала сносится вниз, 
  //поэтому его передаем в качестве начального параметра для результата
  cout << fixed << rec(val, p, p) << endl;
  return 0;
}
4,8(88 оценок)
Ответ:
Лёха1243232
Лёха1243232
03.05.2023
//Боль
//Pascal ABC.NET 3.1 сборка 1219

Var
 f:text;
 max,min,p:real;
 maxn,minn,n,i:integer;
 ar:array of real;
 s:string;
begin
max:=real.MinValue;
min:=real.MaxValue;
n:=0;
 assign(f,'text.txt');
 reset(f);
 while not(Eof(f)) do
  begin
   read(f,p);
   inc(n);
   setlength(ar,n);
   ar[n-1]:=p;
   if ar[n-1]>max then
    begin
     max:=ar[n-1];
     maxn:=n-1;
    end;
   if ar[n-1]<min then
    begin
     min:=ar[n-1];
     minn:=n-1;
    end;
  end;
 close(f);
swap(ar[minn],ar[maxn]);
for i:=0 to n-1 do
if i<>n-1 then s:=s+floattostr(ar[i])+' '
else
s:=s+floattostr(ar[i]);
rewrite(f);
write(f,s);
close(f);
end.

Пример содержимого text.txt:
0 -2.1 1.1
Пример содержимого text.txt после работы программы:
0 1.1 -2.1
4,4(42 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ