задача нахождения нат.чисел, запись которых есть одна из строгих последовательностей
Здравствуйте. У меня есть такая задача:
Найти все натуральные числа, не превосходящие заданного 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, время: 01:28. |