0 / 0 / 0
Регистрация: 18.04.2017
Сообщений: 73
|
|
1 | |
Составить последовательность наибольшей длины, в которой каждое следующее число делится на предыдущее22.04.2017, 03:58. Показов 2612. Ответов 16
Метки нет (Все метки)
Доброе время суток! Пожалуйста помогите!
Ввести положительные числа а1,,,аn(n<=100). Составить из них последовательность наибольшей возможной длины, в которой каждая следующее число делится на предыдущее.(3,2,8,4,4,1 это будет 1,2,4,4,8) в Matlab Как это можно сделать? желательно с кодом и пояснением. Заранее Благодарю!
0
|
22.04.2017, 03:58 | |
Ответы с готовыми решениями:
16
Сформировать последовательность, в которой каждое число, записываемое двумя соседними цифрами, делится на 19 или 23 Определить, можно ли расположить слова так, чтобы каждое следующее начиналось с буквы, на которую закончилось предыдущее Переставить слова в тексте так, чтобы каждое следующее слово начиналось с той буквы, на которую закончилось предыдущее Найти предыдущее и следующее число от исходного |
93 / 91 / 23
Регистрация: 08.05.2016
Сообщений: 521
|
|||||||||||
22.04.2017, 12:31 | 2 | ||||||||||
Начало может быть таким:
0
|
Модератор
1700 / 1552 / 520
Регистрация: 13.09.2015
Сообщений: 5,370
|
|
22.04.2017, 14:28 | 3 |
Далее надо смотреть, чтобы число из одной пары делилось на число из другой пары. То есть задача осталась, фактически, прежней. По мне, составление пар - лишний шаг.
0
|
93 / 91 / 23
Регистрация: 08.05.2016
Сообщений: 521
|
|||||||||||
22.04.2017, 15:24 | 4 | ||||||||||
Сообщение было отмечено KingTao как решение
Решение
Тогда циклы. Отсортировать по возрастанию, поделить на первый член, отсеять всё с не нулевым остатком, повторять пока не закончатся числа в матрице. Затем сделать всё тоже самое, но уже со вторым членом и т. д.. В конце сравнить длины и вывести строку с наибольшей.
Что-то вроде:
1
|
Модератор
1700 / 1552 / 520
Регистрация: 13.09.2015
Сообщений: 5,370
|
|
22.04.2017, 16:35 | 5 |
То, что надо отсортировать по возрастанию, это безусловно. Можно попробовать дальше через meshgrid. Разделить поэлементно две получившихся матрицы и посмотреть, на какой диагонали больше всего будет целых чисел. Вполне вероятно, что без циклов всё же не обойтись...
1
|
93 / 91 / 23
Регистрация: 08.05.2016
Сообщений: 521
|
|
22.04.2017, 17:02 | 6 |
Дальше ТС сам справится.
0
|
0 / 0 / 0
Регистрация: 18.04.2017
Сообщений: 73
|
|
26.04.2017, 13:28 [ТС] | 7 |
единственное вот это лучше заменить на вектор (к примеру a=[3 2 8 4 4 1]), поскольку когда он рандомно задается он иногда ошибку выдает, но возможно это только у меня в Matlab.
Спасибо большое за помощь!
0
|
Модератор
1700 / 1552 / 520
Регистрация: 13.09.2015
Сообщений: 5,370
|
||||||
27.04.2017, 08:43 | 8 | |||||
Оказывается, всё проще, если вспомнить, что, если последующее число делится на предыдущее, то последнее число тоже будет делится на каждое из предыдущих.
KingTao, код для вашего примера:
1
|
3390 / 1913 / 571
Регистрация: 09.04.2015
Сообщений: 5,365
|
||||||
27.04.2017, 10:57 | 9 | |||||
В последней строке ошибка, при тестировании 3 остается
Предлагаю вот так
1
|
0 / 0 / 0
Регистрация: 18.04.2017
Сообщений: 73
|
|
27.04.2017, 13:19 [ТС] | 10 |
Большое спасибо! буду иметь ввиду что можно еще и так без цикла
0
|
93 / 91 / 23
Регистрация: 08.05.2016
Сообщений: 521
|
||||||
27.04.2017, 14:41 | 11 | |||||
0
|
3390 / 1913 / 571
Регистрация: 09.04.2015
Сообщений: 5,365
|
|
27.04.2017, 16:06 | 12 |
Ошибка возникает из-за двух вариантов решений, правда в этом примере они одинаковые, но в общем случае могут быть и разные.
Так просто за короткое время я решения не вижу (опыта в таких выражениях маловато), желательно чтобы Centurio посмотрел, он большой или больший специалист в таких выражениях.
0
|
0 / 0 / 0
Регистрация: 18.04.2017
Сообщений: 73
|
|
27.04.2017, 16:44 [ТС] | 13 |
Да это ошибка появляется если вводить больше числе и после он еще уже считает также как в первом варианте
0
|
93 / 91 / 23
Регистрация: 08.05.2016
Сообщений: 521
|
|
27.04.2017, 17:43 | 14 |
SSC, решение - выводить все варианты в общем случае.
0
|
Модератор
1700 / 1552 / 520
Регистрация: 13.09.2015
Сообщений: 5,370
|
|
27.04.2017, 19:21 | 15 |
Всё же алгоритм неправильный. Похоже, надо через диагонали искать.
0
|
3390 / 1913 / 571
Регистрация: 09.04.2015
Сообщений: 5,365
|
|
28.04.2017, 07:09 | 16 |
Да ывроде все нормально работает, надо только исключить одинаковые варианты ответов и научиться выводить несколько вариантов ответов
0
|
Модератор
1700 / 1552 / 520
Регистрация: 13.09.2015
Сообщений: 5,370
|
|
28.04.2017, 18:42 | 17 |
Нет. При последовательности 1,2,3,6 выведется вся последовательность, хотя 3 на 2 не делится.
0
|
28.04.2017, 18:42 | |
28.04.2017, 18:42 | |
Помогаю со студенческими работами здесь
17
Дана монотонная последовательность, в которой каждое натуральное число k встречается ровно k раз Составить программу, позволяющую: Найти сумму натуральных двузначных чисел, каждое из которых делится на 3 и не делится на 4 Напишите программу, которая находит следующее и предыдущее число для заданного N Вводить последовательность вещественных чисел, пока следующее вводимое число не окажется меньше предыдущего. Вывести полученую последовательность. Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |