задача нахождения нат.чисел, запись которых есть одна из строгих последовательностей
Здравствуйте. У меня есть такая задача:
Найти все натуральные числа, не превосходящие заданного n, десятичная запись которых есть строго возрастающая или строго убывающая последовательность цифр. У меня есть код, который считывает число и записывает цифры числа в массив: var b = +prompt('введите число:'); var massiv = []; for (var temp = b; Math.round(temp) != 0; temp /= 10, temp = Math.floor(temp)) { massiv.unshift(temp % 10); } Помогите пожалуйста дописать программу. Или подскажите как организовать нахождение этих чисел. Спасибо! |
Вообще не поятно чо вам надо: в коде одно, в задаче другое, подразумевали вы наверняка третье...
Например чтобы проверить введённое число, достаточно сделать так: var digits = '0123456789 9876543210', num = +prompt('введите число:');; if( ~digits.indexOf(num) ) alert('Норм: ' + num); else alert('Печаль: ' + num); |
Aetae,
Я так думаю, что следующий пример описывает постановку проблемы: Цитата:
|
with-love-from-siberia,
А я думаю по-другому. Строго возрастающая последовательность - это не последовательность, в которой каждая следующая цифра на 1 больше предыдущей, а последовательность, где каждая следующая цифра строго больше предыдущей (т.е. не "больше или равно" а "строго больше") Пусть автор для начала уточнит условие. Решать можно простым перебором, это годится для небольших чисел, но если граничное число большое и требуется эффективность, то можно применить более хитрый алгоритм, но тогда решение будет нетривиальным. |
rgl,
Согласен. Уточнение требуется. Цитата:
Цитата:
Цитата:
|
with-love-from-siberia,
Я имел ввиду другое, дано 50, восходящие 0-9, 12-19, 23-29, 34-39, 45-49, нисходящие 0-9, 10, 20, 21, 30-32, 40-43, 50 |
rgl, да... Без четкого определения не обойтись.
|
Цитата:
А в пример привёл самое простое что пришло на ум в данных условиях.) |
Цитата:
<script type="text/javascript"> function Sequence(n) { if (n<12) return 'Искомых чисел нет.'; var i, k, a, b, t, A=[]; for (i=12; i<=n; i++) { t = true; k = i; a = k%10; k = Math.floor(k/10); while (k>0 && t) { b = k%10; if (b>=a) t = false; else { a = b; k = Math.floor(k/10); } } if (t) A[A.length]=i; } return A; } </script> <button onclick="alert( Sequence(50) )">Найти числа для n=50</button> Цитата:
|
Цитата:
Цитата:
Аналогично оба ответят на вопрос: пустое множество - это множество? |
Часовой пояс GMT +3, время: 08:51. |