|
98 / 36 / 18
Регистрация: 05.11.2018
Сообщений: 231
|
||||||
Найти количество счастливых чисел не больших заданного N11.11.2018, 15:12. Показов 8660. Ответов 40
Все знают, что счастливые числа - это те числа, которые содержат только счастливые цифры 7 и/или 4. Вам нужно найти количество счастливых чисел не больших N.
Входные данные:В единственной строке входного потока записано натуральное число N, не превышающее 1032. Пример входного файла (input.txt): 56 Выходные данные:В единственную строку выходного потока нужно вывести одно целое число. Пример выходного файла (output.txt): 4 Мой код:
0
|
||||||
| 11.11.2018, 15:12 | |
|
Ответы с готовыми решениями:
40
Найти сумму всех элементов массива вещественных чисел, больших заданного числа
|
|
98 / 36 / 18
Регистрация: 05.11.2018
Сообщений: 231
|
||||||
| 12.11.2018, 16:36 [ТС] | ||||||
|
Использование сдвига в строке это разумно,протестировал для счастливых чисел,верно.
Получается что-то такое:
0
|
||||||
|
98 / 36 / 18
Регистрация: 05.11.2018
Сообщений: 231
|
|||||
| 12.11.2018, 17:17 [ТС] | |||||
|
Рассмотрим другой пример.Число 17563,тут попроще,1 сразу не подходит значит исходное число примет вид a*1000+b*100+c*10+d,все цифры ставим 7 т.к. уменьшили разряд-выходит число 7777 Добавлено через 7 минут Способ 2.1,для каждой цифры числа проверять(начиная с первой), 1.1) если цифра меньше 4(но не 0),то в максимальном счастливом разрядов на 1 меньше,чем в исходном,в таком случае все последующие цифры заменяем на 7 1.2) если цифра равна 4(4163),проверяем следующие числа,если в них найдется число меньше 4,то уменьшаем разряд и выполняем алгоритм пункта 1.1(уменьшить разряд на 1,первое число в таком случае будет 7,и все остальные цифры будут 7) 1.3) если цифра больше 4 но меньше 7(5163),то присваиваем ей значение 4,проверяем по пункту 1.2(в случае 5163,у нас есть цифра 1,разряд в таком случае уменьшатся не будет,т.к. 5>4,значит первая цифра нужного нам числа 4,а все последующие-7) 1.4) если цифра больше 7(9640) то присваиваем ей значение 7,и все последующие цифры равны 7(если 9640,получится 7777) 1.5) если цифра равна 7(7154) то проверяем,есть в последующих цифрах числа меньше 4,если есть то первая цифра нужного нам числа равна 4,а все последующие равны 7. Вроде бы все. Добавлено через 4 минуты Добавлено через 22 минуты
0
|
|||||
|
Модератор
|
|
| 12.11.2018, 18:21 | |
|
Могу. Написал где-то после 3-го ответа в этой теме. Возможно есть вариант проще, пока воздержусь от публикации.
Пробуйте, это должно принести свой результат. Добавлено через 11 минут Что сделает ваш алгоритм для 74343?
0
|
|
|
98 / 36 / 18
Регистрация: 05.11.2018
Сообщений: 231
|
||
| 12.11.2018, 19:20 [ТС] | ||
|
В таком случае проверяем цифры и находим числа меньше 4,первую цифру меняем на 4, цифры меньше 4 преобразуем в 7.(74343,наибольшее счастливое 47777) Предложите ваш вариант кода как этот поиск в строках реализуется. Добавлено через 21 минуту fn - это наибольшее счастливое k-разрядное число, не превышающее n f(n) будем конструировать из числа n, переписывая слева направо цифры n, совпадающие с 4 или 7 до тех пор, пока не встретится цифра отличная от 4 и 7 (если такой цифры не встретится, то будут выписаны все цифры числа n, они и будут образовывать искомое число fn , т .е. fn будет совпадать с n). Дальнейшие наши действия зависят от того, чему равна данная цифра (обозначим её h), не совпадающая с 4 и 7. Рассмотрим 3 варианта. h < 4. В этом случае среди уже выписанных цифр ищем цифру 7 с наибольшим номером (цифры договоримся нумеровать слева направо). Допустим, что такая цифра 7 найдена, и она находится на i-м месте. Тогда эту цифру заменяем цифрой 4, а после данной четвёрки выписываем k - i семёрок ("затирая" тем самым, те цифры, которые уже находились на местах с номерами i + 1 и более). Теперь у нас имеются k цифр; они и будут образовывать искомое число f(n). 4 < h < 7. В данном случае после уже выписанных цифр вместо h записываем цифру 4, а после неё — k - i семёрок, где i - номер цифры h. h > 7. Теперь после уже выписанных цифр вместо h записываем цифру 7, а после неё — k - i семёрок, где i - номер цифры h.
0
|
||
|
Модератор
|
|
| 12.11.2018, 19:43 | |
|
Talk is cheap, show the code.
Добавлено через 5 минут Я пошел простым путем, справа налево с учетом заема, при обнаружении «лишнего» разряда можно заменить хвост на семерки. Да, в целом накладно, но на 32 разрядах не ощутимо. Придумаете лучше — готов посмотреть.
1
|
|
|
98 / 36 / 18
Регистрация: 05.11.2018
Сообщений: 231
|
|
| 12.11.2018, 19:46 [ТС] | |
|
0
|
|
|
98 / 36 / 18
Регистрация: 05.11.2018
Сообщений: 231
|
|
| 12.11.2018, 20:13 [ТС] | |
|
0
|
|
|
98 / 36 / 18
Регистрация: 05.11.2018
Сообщений: 231
|
|
| 12.11.2018, 21:34 [ТС] | |
|
0
|
|
|
98 / 36 / 18
Регистрация: 05.11.2018
Сообщений: 231
|
||||||
| 20.11.2018, 20:17 [ТС] | ||||||
|
Предлагаю улучшение второй части
Для длины 1 всего 2 счастливых числа(2,4) ,для длины 2 2*2+2=6 счастливых чисел и так далее по формуле
0
|
||||||
|
Модератор
|
|||||||
| 20.11.2018, 20:36 | |||||||
|
Тогда уж:
Только LongInt все равно мало, его до 30 знаков хватит, LongWord до 31, а для указанных в условии 32 нужно Int64 или QWord.
1
|
|||||||
|
98 / 36 / 18
Регистрация: 05.11.2018
Сообщений: 231
|
||||||||||||||||||
| 20.11.2018, 21:18 [ТС] | ||||||||||||||||||
0
|
||||||||||||||||||
|
Модератор
|
|||
| 20.11.2018, 22:21 | |||
|
Любой правильный вариант сгодится. Добавлено через 28 минут Скажу больше, там, откуда был цельнотянут код в этом сообщении (гугл знает), опубликован отличный разбор задачи, не написать по которому код -- сущее преступление. Добавлено через 10 минут
0
|
|||
|
98 / 36 / 18
Регистрация: 05.11.2018
Сообщений: 231
|
|
| 20.11.2018, 22:21 [ТС] | |
|
0
|
|
|
98 / 36 / 18
Регистрация: 05.11.2018
Сообщений: 231
|
|||||||||
| 20.11.2018, 22:50 [ТС] | |||||||||
|
Добавлено через 17 минут Вот что вышло
0
|
|||||||||
|
Модератор
|
||||||||
| 21.11.2018, 01:30 | ||||||||
|
Поиск в гугле по строке 22 исходника на Си дает ровно 2 ссылки: на этот форум и на другой сайт, где есть описание алгоритма простым понятным русским языком. По этому описанию сделан код на Си, по нему же не составит труда написать аналог на паскале. Пробуйте.
Добавлено через 46 секунд Добавлено через 6 минут Нумерация в строках в Си с 0, у нас с 1. Без дополнительного массива под цифры легко обойтись. unsigned char number[len] -- это сродни number: array [0..33] of Byte. Можно использовать строку... Добавлено через 4 минуты unsigned long long result = len > 1 ? (1llu << len) - 2 : 0; справа от знака равно (операция присваивания) стоит тернарная операция: условие ? выражение_если_истина : выражение_если_ложь. примерно:
1
|
||||||||
|
98 / 36 / 18
Регистрация: 05.11.2018
Сообщений: 231
|
||||||||
| 21.11.2018, 16:41 [ТС] | ||||||||
|
Добавлено через 4 минуты Помогите избавиться от strToint и тому подобных функций,мало того что программа не работает правильно так еще эти функции не всегда нормально работают.
0
|
||||||||
| 21.11.2018, 16:41 | |
|
Найти сумму и количество целых чисел, больших 10, меньших 30 и кратных 5 Найти количество положительных и отрицательных чисел среди чисел заданного вида
Посчитать количество отрицательных элементов массива, больших заданного значения Найти количество четных чисел, сумма цифр в которых не превышает заданного числа P Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности.
Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
|
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version
Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
|
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер
На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
|
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/
TL DR
Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
|
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|