ПОМОГИТЕ ПОЖАЛУЙСТА С ИНФОРМАТИКОЙ. PASCAL ABC. 25 БАЛЛОВ БЛОХА И КУБ.
ПОМОГИТЕ ПОЖАЛУЙСТА С ИНФОРМАТИКОЙ. PASCAL ABC. 25 БАЛЛОВ БЛОХА И КУБ. Блоха находится в верхушке куба. За один прыжок она может переместиться в любую соседнюю верхушку. Сколькими различными маршрутами она ровно за N прыжков может оказаться в обратной вершине? необходимо написать программку для pascal abc!!!
Задать свой вопрос1 ответ
Марина Эстнрова
Представим куб в виде графа его каркаса. Пронумеруем все верхушки куба цифрами от 1 до 8. Задача сводится к обыкновенному обходу в ширину. Для четных N ответ будет 0, т.к. нельзя дойти на обратную верхушку за четное кол-во шагов. Ответ будет расти в геометрической прогрессии в зависимости от N. Программа:
const
m: array[1..8, 1..8] of byte =
((0, 1, 1, 1, 0, 0, 0, 0),
(1, 0, 0, 0, 1, 0, 1, 0),
(1, 0, 0, 0, 1, 1, 0, 0),
(1, 0, 0, 0, 0, 1, 1, 0),
(0, 1, 1, 0, 0, 0, 0, 1),
(0, 0, 1, 1, 0, 0, 0, 1),
(0, 1, 0, 1, 0, 0, 0, 1),
(0, 0, 0, 0, 1, 1, 1, 0));
var
n, i, j, k: integer;
a: array[0..100, 1..8] of int64;
begin
read(n);
a[0, 1] := 1;
for k := 1 to n do
for i := 1 to 8 do
for j := 1 to 8 do
if m[i, j] = 1 then
a[k, i] := a[k, i] + a[k - 1, j];
write(a[n, 8]);
end.
const
m: array[1..8, 1..8] of byte =
((0, 1, 1, 1, 0, 0, 0, 0),
(1, 0, 0, 0, 1, 0, 1, 0),
(1, 0, 0, 0, 1, 1, 0, 0),
(1, 0, 0, 0, 0, 1, 1, 0),
(0, 1, 1, 0, 0, 0, 0, 1),
(0, 0, 1, 1, 0, 0, 0, 1),
(0, 1, 0, 1, 0, 0, 0, 1),
(0, 0, 0, 0, 1, 1, 1, 0));
var
n, i, j, k: integer;
a: array[0..100, 1..8] of int64;
begin
read(n);
a[0, 1] := 1;
for k := 1 to n do
for i := 1 to 8 do
for j := 1 to 8 do
if m[i, j] = 1 then
a[k, i] := a[k, i] + a[k - 1, j];
write(a[n, 8]);
end.
Мишаня Горковик
Если очень огромные значения N, то необходимо оптимизировать программа, а именно избавится от матрицы смежности и для каждой верхушки оставить в памяти только 3 примыкающие. Также можно обойтись всего 2-мя массивами, исключив двумерный, потому что мы обращаемся только к предшествующим элементами массива, иные нас не интересуют
Slava Salozhencev
к тому же придется писать кучу строк кода для длинноватой арифметики, или же использовать интегрированный BigInteger из PascalABC.NET
Бунятян
Юрик
в программке видимо ошибка, всюду пишет на выполнении 0
Любовь Шамиарова
Можешь написать программку не для PascalNet, а просто для Pascal ABC?
Якишна
Даниил
Введи 3. Что выводит?
, оставишь ответ?
Похожие вопросы
-
Вопросы ответы
Новое
NEW
Статьи
Информатика
Статьи
Последние вопросы
Определить предложения какие они по цели высказывания и по интонации
Русский язык.
"Три толстяка" Называли эту площадь Площадью Звезды последующей причине.
Русский язык.
на одной грядке коротышки посадили 3 ряда морковок по 8 штук
Разные вопросы.
эссе на тему какое образование дается в каждой семье
Қазақ тiлi.
Put the verb in brackets into the Present Indefinite.
1The Volga ,
Английский язык.
Сколько стоит коктейль молочный? Точную цену надо?
Математика.
Составить рассказ Из чего складывался культ монарха помазанника Божьего?
История.
задание экономиоти
Рассмотри ситуацию: человек живёт на Крайнем Се-вере. С помощью каких
Экономика.
Человек живет на Крайнем Севере. С помощью каких благ удовлетворяются потребности
Экономика.
там лежат три яйца.у дома рос клен.Это гнездо сойки.на клёне гнездо
Русский язык.
Облако тегов