1 / 1 / 1
Регистрация: 12.02.2017
Сообщений: 28
1

Сложная задача на перестановки

23.10.2018, 20:57. Показов 9993. Ответов 12

Студворк — интернет-сервис помощи студентам
Перестановкой размера n называется массив ⟨a1, a2, . . . , an⟩ различных чисел от 1 до n.
Каждое число в перестановке встречается ровно один раз.
Сеня называет красотой перестановки ⟨a1, a2, . . . , an⟩ число
(a1a2 + a2a3 + . . . + an−1an). Он хочет посчитать количество перестановок, красота
которых делится на k.
Даны числа n и k, найдите количество перестановок размера n, красота которых делится
на k.
Например, для n = 3 существует 6 перестановок. Рассмотрим все эти перестановки и
их красоту.
Перестановка Красота
⟨1, 2, 3⟩ 1 · 2 + 2 · 3 = 8
⟨1, 3, 2⟩ 1 · 3 + 3 · 2 = 9
⟨2, 1, 3⟩ 2 · 1 + 1 · 3 = 5
⟨2, 3, 1⟩ 2 · 3 + 3 · 1 = 9
⟨3, 1, 2⟩ 3 · 1 + 1 · 2 = 5
⟨3, 2, 1⟩ 3 · 2 + 2 · 1 = 8

Добавлено через 4 минуты
Перестановка Красота
⟨1, 2, 3⟩ 1 · 2 + 2 · 3 = 8
⟨1, 3, 2⟩ 1 · 3 + 3 · 2 = 9
⟨2, 1, 3⟩ 2 · 1 + 1 · 3 = 5
⟨2, 3, 1⟩ 2 · 3 + 3 · 1 = 9
⟨3, 1, 2⟩ 3 · 1 + 1 · 2 = 5
⟨3, 2, 1⟩ 3 · 2 + 2 · 1 = 8
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.10.2018, 20:57
Ответы с готовыми решениями:

Задача не сложная на тему строки.
Создайте программу, которая запрашивает тестовую строку и заменяет все слоги "ра" на "пар"....

Сложная задача(для меня во вском случае).
На паскаль. Через множества. Даны следующие описания переменных: type город=(a,b,c,d,e,f,g,h); ...

сложная задача
см.вложение

Сложная задача.
Доброго времени суток! Столкнулся вот с такой ситуацией: мой клиент в своем магазине, среди...

12
2177 / 1306 / 497
Регистрация: 07.04.2017
Сообщений: 4,564
23.10.2018, 21:10 2
Лучший ответ Сообщение было отмечено Суренчик как решение

Решение

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
function ПолучитьПерестановки(c: integer; prev: array of integer; i: integer): sequence of array of integer;
begin
  if i=0 then
    prev := new integer[c] else
  if i=c then
  begin
    yield prev;
    exit;
  end;
  for var n := 1 to c do
    if not prev.Contains(n) then
    begin
      var temp := Copy(prev);
      temp[i] := n;
      yield sequence ПолучитьПерестановки(c, temp, i+1);
    end;
end;
 
function ПолучитьПерестановки(c: integer) :=
ПолучитьПерестановки(c,nil,0);
 
begin
  var (c,k) := ReadlnInteger2;
  ПолучитьПерестановки(c)
  .Where(a-> ( a.Pairwise.Sum(t->t[0]*t[1]) mod k )=0 )
  .Count
  .Print;
end.
1
1 / 1 / 1
Регистрация: 12.02.2017
Сообщений: 28
23.10.2018, 21:31  [ТС] 3
Серега, она не работает
0
2177 / 1306 / 497
Регистрация: 07.04.2017
Сообщений: 4,564
23.10.2018, 21:42 4
Как именно не работает? Скрин + текст ошибки.
0
1 / 1 / 1
Регистрация: 12.02.2017
Сообщений: 28
23.10.2018, 21:49  [ТС] 5
Вот так
Миниатюры
Сложная задача на перестановки  
0
2177 / 1306 / 497
Регистрация: 07.04.2017
Сообщений: 4,564
23.10.2018, 21:53 6
А, это была #486, уже давно исправлено. Обновитесь.
0
1 / 1 / 1
Регистрация: 12.02.2017
Сообщений: 28
23.10.2018, 22:15  [ТС] 7
не можешь ли ты объяснить,что и для чего в этой программе? просто я щё учусь,хочу понять способ решения
0
2177 / 1306 / 497
Регистрация: 07.04.2017
Сообщений: 4,564
23.10.2018, 22:23 8
Ок, какие части непонятны?
0
1 / 1 / 1
Регистрация: 12.02.2017
Сообщений: 28
23.10.2018, 22:28  [ТС] 9
Ну, вообще, как бы, я не проходил ещё таких функций, так что было бы неплохо, если бы ты объяснил всё. Спасибо большое!!!
0
2177 / 1306 / 497
Регистрация: 07.04.2017
Сообщений: 4,564
23.10.2018, 22:37 10
Каких таких? yield - есть презентация на PascalABC.Net

Что ещё?
0
Status 418
Эксперт Python
3873 / 2151 / 573
Регистрация: 26.11.2017
Сообщений: 5,021
Записей в блоге: 2
24.10.2018, 18:00 11
А задача точна на "brute force" ?
Какие ограничения на массив a?
0
2177 / 1306 / 497
Регистрация: 07.04.2017
Сообщений: 4,564
24.10.2018, 18:19 12
Единственное ограничение - при вычислении суммы может возникнуть переполнение. Но для этого надо такое большое n - что программа никогда не досчитает (очень много перестановок будет).
0
1 / 1 / 1
Регистрация: 12.02.2017
Сообщений: 28
24.10.2018, 21:22  [ТС] 13
Серёжа, ты можешь перевести на простой АВС с АВСnet?

Добавлено через 11 минут
Хотя нет, не надо. Спасибо большое!!!!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.10.2018, 21:22
Помогаю со студенческими работами здесь

Сложная задача
Здравствуйте, помогите пожалуйста с решением:

Сложная задача Ексель
Цех выпускает детали А и В. На производство детали А рабочий тратит 10 часов, на производство...

Сложная, но интересная задача
Есть таблица с диапазонами телефонных номеров, а в АТС используются префиксы телефонных номеров....

Сложная задача по черепашке
Всем привет,ребят,помогите решить задачу.Целую неделю мучаем:cry: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru