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

Мистер фокс разрабатывает программу для робота-лунохода. сегодня его роботу нужно добраться по прямой дороге длиной 20 футов от космодрома до базы, попутно забрав ценный предмет. будем считать дорогу отрезком, в левом конце которого находится космодром, в правом конце – база, а ровно посередине – лежит ценный предмет. мистер фокс может давать роботу три команды: a – сместиться на 1 фут вправо, b – сместиться на 2 фута вправо, c – сместиться на 3 фута вправо. набор из 20 футов команд a является удачным, так как приводит робота на базу (попутно он заберет ценный предмет, потому что остановится около него), а вот набор b удачным не является: робота на базу он , но вот ценный предмет робот не заберет, поскольку не остановится около него. сколько существует удачных наборов команд?

👇
Ответ:
Viktoria727
Viktoria727
11.02.2021
Все удачные наборы команд должны включать остановку на отметке 10 футов.
На отметку 1 фут робот может попасть с одной команды A;
на отметку 2 фута - с команд AA и B (всего 2 набора команд);
на отметку 3 фута - с команд AAA, AB, BA и C (4 набора).
Так как за одну команду робот может переместиться на 1, 2 или 3 фута, то для подсчета количества наборов команд, позволяющих роботу попасть на отметки N > 3, можно использовать формулу
K(N) = K(N-1)+K(N-2)+K(N-3).
K(4) = K(3)+K(2)+K(1) = 4+2+1 = 7
K(5) = K(4)+K(3)+K(2) = 7+4+2 = 13
K(6) = K(5)+K(4)+K(3) = 13+7+4 = 24
K(7) = K(6)+K(5)+K(4) = 24+13+7 = 44
K(8) = K(7)+K(6)+K(5) = 44+24+13 = 81
K(9) = K(8)+K(7)+K(6) = 81+44+24 = 149
K(10) = K(9)+K(8)+K(7) = 149+81+44 = 274
Так как вторая часть пути робота также имеет длину 10, то общее количество удачных наборов команд = 274*274 = 75076
4,5(32 оценок)
Открыть все ответы
Ответ:
liq2354234
liq2354234
11.02.2021
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace zamenaZnakaVmassive
{
class Program
{
static void Main(string[] args)
{
int[] mas = new int[10];
Random r = new Random();
Console.WriteLine("Исходный массив: ");
for (int i = 0; i<mas.Length;i++)
{
mas[i] = r.Next(1, 10);
Console.Write(mas[i] + " ");
}
Console.WriteLine();
Console.WriteLine("Введите значение");
int x = int.Parse(Console.ReadLine());
Console.WriteLine("Измененный массив: ");
for (int i =0; i < mas.Length; i++)
{
if (mas[i] == x) mas[i] = mas[i] * (-1);
Console.Write(mas[i] + " ");
}
Console.ReadKey();
{
}
}
}
}
4,6(31 оценок)
Ответ:
polinaguskova
polinaguskova
11.02.2021
Чтобы разъяснить происходящее, были сделаны следующие шаги.
1. Константы 3.1 и 0.8 переведены в машинное представление а затем назад в десятичное с максимальной для паскалевских данных вещественного типа real (он же double) точностью (вложения 1 и 2).
2. В системе компьютерной алгебры, позволяющей работать с произвольной точностью (выбрана точность в 30 значащих цифр) для полученных констант выполнены соответствующие заданному фрагменту программы вычисления (вложение 3)
3. Результат 0.499999999999999955591079014996 был переведен в машинное представление. Затем в машинное представление была переведена константа 0.5, которая, как видно во вложении 4, представляется в компьютере точно. Поэтому проверка на точное равенство с 0.5 дает не тот результат, который Вы ожидали.
4. Можно было также воспользоваться программой на паскале.
begin
  var x:=3.1;
  var y:=0.8;
  var p:=2;
  var a:=Frac(x); // =0,1
  var b:=Frac(y)-0.5; // =0,3
  var kp:=sqrt(sqr(0.5-a)+b*b); // =0,5
  if abs(kp-0
  Writeln(kp-0.5)
end.

Результат: -5.55111512312578E-17
Это как раз то, что так портит Вам всю картину.

По поводу Вашего условия if kp>=0.5 then p=p+1;
Ошибка имеет порядок 0.6·10⁻¹⁶ и наверно ничего страшного не будет, если оператор (с запасом) подправить на if kp>=(0.5-1e-15) then p:=p+1;

Pascalabc.net вот кусочек программки: // x=3.1 (введено с клавиатуры) // y=0.8 (введено с клавиатуры
Pascalabc.net вот кусочек программки: // x=3.1 (введено с клавиатуры) // y=0.8 (введено с клавиатуры
Pascalabc.net вот кусочек программки: // x=3.1 (введено с клавиатуры) // y=0.8 (введено с клавиатуры
Pascalabc.net вот кусочек программки: // x=3.1 (введено с клавиатуры) // y=0.8 (введено с клавиатуры
4,7(96 оценок)
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ