94 / 48 / 63
Регистрация: 16.06.2014
Сообщений: 386
|
|
1 | |
Можно ли определить, когда будет найдено число?01.04.2015, 04:47. Показов 1722. Ответов 31
Метки нет (Все метки)
Доброго времени суток.
Есть задача: Найти минимальное число, большее заданного, которое равно сумме своих десятичных цифр, возведённой в степень, большую 1. Например, если вводится 2000, то искомым будет число 2401. Например, если вводится 1000000000, то искомым будет число 8303765625. Предвидя отрицательный ответ, тем не менее, спрашиваю: можно ли, имея лишь заданное число, определить некое число, меньше которого точно будет искомое число?
0
|
01.04.2015, 04:47 | |
Ответы с готовыми решениями:
31
Определить вероятность, что при проверке всей партии деталей не будет найдено ни одной бракованной Можно ли узнать, когда критическая секция будет захвачена? Определить время, когда пирог будет испечен Лентяй: по заданному расписанию найти такой день, когда можно будет сдать сразу все долги |
4166 / 3038 / 914
Регистрация: 19.11.2012
Сообщений: 6,182
|
|
01.04.2015, 08:00 | 2 |
ronaldo, требуется по числу а определить такое число b, что число с, равное некоторой степени суммы своих десятичных цифр, находится в промежутке [a,b]. При этом само с можно не вычислять. Так?
1
|
94 / 48 / 63
Регистрация: 16.06.2014
Сообщений: 386
|
|
01.04.2015, 11:14 [ТС] | 3 |
kabenyuk, почти. Следующая формулировка точнее:
Требуется по числу а определить такое минимальное число b, что число с, равное некоторой степени суммы своих десятичных цифр, находится в промежутке [a,b]. c не вычислять - в том и фишка.
0
|
Диссидент
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
|
|
01.04.2015, 12:54 | 4 |
Имхо, тут логическое противоречие. Поскольку минимальным таким b и будет это c.
Точнее, b - минимальное число, большее a, являющееся некоторой степенью суммы своих цифр. Наверное, нужно найти хоть какое нибудь b, ограничивающее область поиска? Нет?
1
|
2080 / 1238 / 464
Регистрация: 20.12.2014
Сообщений: 3,237
|
||||||
01.04.2015, 13:43 | 5 | |||||
ronaldo, вот программа, которая находит все числа в промежутке от 11 до 1 000 000 000, которые можно представить через возведение в степень суммы их цифр.
1
|
4166 / 3038 / 914
Регистрация: 19.11.2012
Сообщений: 6,182
|
|
01.04.2015, 13:58 | 6 |
Все-таки правильнее сказать так "минимально возможное". Но я не об этом.
Не знаю для чего вам это нужно. Но вот учитывать проще сумму цифр и степень. Например, 19920=1887620149539230539058375534310517606114631604199. Сумма цифр монстра в правой части (числом назвать его язык не поворачивается) равна 199 (если я нигде не ошибся). С другой стороны, слева совершенно безобидные малютки 199 и 20. Добавлено через 14 минут Небольшая опечатка. Степень 199 должна быть 21.
2
|
94 / 48 / 63
Регистрация: 16.06.2014
Сообщений: 386
|
|
01.04.2015, 14:51 [ТС] | 7 |
Байт, вы правы.
Извиняюсь за тупость, но не понял этой фразы. Учитывать где? Кстати, kabenyuk, как вы такое замечательное равенство получили?
0
|
Диссидент
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
|
|
01.04.2015, 15:05 | 8 |
Видимо, речь идет о том, что программу, ищущую такие числа, можно построить так.
Перебирать числа x и степени y. У числа xy считать сумму цифр s. И если s=x, кричать Ура! Перебор будет значительно короче. Легче воспользоваться длинной арифметикой ("длинных" операций меньше, всего лишь умножение на короткое) и значит легко пойти дальше машинного представления (и по дороге получить монстра kabenyuk). Но у этой задачи возможно обобщение. Зачем останавливаться только на десятичной системе счисления?
1
|
4166 / 3038 / 914
Регистрация: 19.11.2012
Сообщений: 6,182
|
|
01.04.2015, 15:09 | 9 |
Да я тоже не понимаю и не знаю, где.
У меня таких много. Байт секрет раскрыл. Но пользовался только excel'ем.
2
|
Диссидент
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
|
|
01.04.2015, 15:31 | 10 |
Вот симпатичное число в 2-ичной 1010001 = 114
Добавлено через 4 минуты И до какого порядка excel числа может считать? Насколько я знаю, сам по себе Excel с такими не работает (впрочем, могу и ошибаться, я не большой знаток). Наверное, какое-то хитрое представление, да? Добавлено через 14 минут Вот, кстати, неплохой алгоритм. Найти число, удовлетворяющее условию Но только для чисел, представимых в стандартных типах.
1
|
94 / 48 / 63
Регистрация: 16.06.2014
Сообщений: 386
|
|
01.04.2015, 18:08 [ТС] | 12 |
Байт, можете идею из восьмого поста применить для решения задачи:
Найти минимальное число, большее заданного, которое равно сумме своих десятичных цифр, возведённой в степень, большую 1. Я ходил по ссылке из десятого поста, но мне интересна реализация именно вами описанного алгоритма.
0
|
4166 / 3038 / 914
Регистрация: 19.11.2012
Сообщений: 6,182
|
|
01.04.2015, 18:30 | 13 |
Ну если не позаботиться, то не более 10 десятичных цифр. Понятно, что необходимо использовать что-то типа длинной арифметики + VBA. Да, и умножать короткие на длинные, которые удобно представлять как текстовые строки десятичного представления числа.
1
|
2080 / 1238 / 464
Регистрация: 20.12.2014
Сообщений: 3,237
|
|
01.04.2015, 18:34 | 14 |
ronaldo, я вам в программе приведенной выше вроде бы уже реализовал эту идею. Нужно только заменить тип данных, чтобы считать числа больше 1 000 000 000, вместо n = 11 ставить начало перебора с заданного числа и сделать выход из цикла при нахождении первого значения .
0
|
Диссидент
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
|
|
01.04.2015, 19:20 | 15 |
Я, собственно, так и поступил во вложении поста 11. Но немножко схитрил в целях эффективности. Я представляю числа в 1000-ичной системе. Можно было бы взять систему по максимуму short, это дало бы еще больший выигрыш в эффективности, но тогда замучаешься в десятичную переводить (хотя тоже - не Бином Ньютона). И эффективность на этом переводе терялась бы.
Добавлено через 14 минут При всем уважении к вашим стараниям, хочу заметить, что предложенный вами алгоритм крайне не эффективен для достаточно больших чисел. Мало того, что вы перебираете все числа, так еще и все возможные степени! Даже для представимых в стандартных типах чисел (до 109, скажем) он будет работать неоправдано долго. Что уж говорить о "длинных" числах. Добавлено через 8 минут Вам ведь нужно именно минимальное, да? Собственно, генерацию таких чисел я уже реализовал в посте 11 (вложение). Но они генерируются "вразброс". Как найти минимальное? Ничего умнее, чем сравнивать и выбирать меньшее, в голову не приходит. Но где остановиться? В какой момент будет ясно, что меньше уже не получится? И еще вопрос. С числами какого порядка вы собираетесь работать? Помещающимися в стандартные типы, или нужно чего-то большего? Добавлено через 16 минут Попутно хочу похвастаться. Число может сложить с себя звание монстра 900 pow 217 = 117 658 836 200 566 641 882 326 804 988 437 726 931 934 010 014 963 224 628 533 621 567 999 100 883 880 584 910 085 936 271 537 026 481 185 458 945 323 393 439 742 082 113 315 251 718 144 829 436 251 273 438 085 673 551 344 210 424 446 349 697 811 909 784 006 141 340 373 856 900 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 (Разбил на триады для внятности)
4
|
94 / 48 / 63
Регистрация: 16.06.2014
Сообщений: 386
|
|
01.04.2015, 19:47 [ТС] | 16 |
Да.
У заданного числа тип должен быть unsigned __int64. Я в вашем коде (X.C) разбираюсь - какой тип у newXXL, nulXXL, locXXL, addXXL? void?
0
|
Диссидент
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
|
||||||
01.04.2015, 20:22 | 17 | |||||
Да. Старые компиляторы допускали некоторые вольности...
Добавлено через 31 минуту Но результат может быть и больше, да? На всякий случай набросал пару функций
1
|
94 / 48 / 63
Регистрация: 16.06.2014
Сообщений: 386
|
|
01.04.2015, 20:40 [ТС] | 18 |
Логично предположить, что да.
Но я ведь могу просто в коде из поста 11 заменить SU на unsigned __int64? Задача-то сама по себе. А вот задание, состоящее в написании проги для этой задачи, на самом деле, состоит не только в написании проги для этой задачи (извиняюсь за тавтологию). Потом нужно будет распараллелить прогу с использованием технологий OpenMP.
0
|
Диссидент
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
|
|
01.04.2015, 20:52 | 19 |
Попробуй.
Но там фишка в том, что они <1000. И программа при умножении за этим внимательно следит. Вообще, при работе с длинными числами каждый "разряд" должен быть немножко меньше максимально возможного. Ведь когда мы умножаем 9*6, у нас получается 54. В одной цифре мы этот результат удержать не можем. В цифрах у нас получается "4", а 5 - в уме (Vume). А то, что я делаю в X.C - это просто моделирование этой "школьной" арифметики. Тут я тебе, к сожалению, не помощник...
1
|
94 / 48 / 63
Регистрация: 16.06.2014
Сообщений: 386
|
|
01.04.2015, 21:22 [ТС] | 20 |
Ты в этой теме помоги по максимуму, плиз.
Я думал над этим Вопросы, конечно, очень сложные. Единственное соображение в моей голове по этому поводу - когда найдём первое подходящее число (подходящее - большее заданного и находимое в твоей проге), то все последующие числа уже нужно будет возводить в степени, меньшие показателя степени подошедшего числа.
0
|
01.04.2015, 21:22 | |
01.04.2015, 21:22 | |
Помогаю со студенческими работами здесь
20
Определить скорость тела в момент, когда оно будет находиться на расстоянии d от плоскости На индикаторе светится число 1234. Когда нажимают первую кнопку, число увеличивается на 100, когда вторую - на Определить линейную скорость, которую будет иметь центр шара в тот момент, когда шар скатится с наклонной плоскости Линейный поиск. Функция принимает число. Возвращает индекс этого числа в массиве. Или -1, если число не найдено Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |