|
0 / 0 / 0
Регистрация: 28.11.2012
Сообщений: 10
|
||||||
помогите оптимизировать программу. Не проходит тест, из-за большого количества используемой памяти.28.11.2012, 22:11. Показов 1366. Ответов 12
Метки нет (Все метки)
Пжл, помогите оптимизировать программу. Не проходит тест, из-за большого количества используемой памяти.
Суть программы: Есть последовательность чисел, в которой цифры каждого числа идут по возрастанию. То есть, 123456-подходит, 145-подходит, числа от 1 до 9 подходят, НО 34256-не подходит, 101-не подходит. В файле skaitli.in(текстовом). записано одно число. Это число является порядковым номером последовательности. В файл skaitli.out(текстовый) надо записать число, которое будет соответствовать данному номеру. Порядковый номер-n 1≤n≤2147483647. Код:
за "цифры по возрастанию" также принимаются одинаковые цифры. К примеру 111,122. Добавлено через 35 минут Народ! Ну не проходите мимо плз!
0
|
||||||
| 28.11.2012, 22:11 | |
|
Ответы с готовыми решениями:
12
Автоматизировать и оптимизировать обработку большого количества данных Можно ли оптимизировать функцию обработки большого количества строк Выделение большого количества оперативной памяти |
|
|
|
| 28.11.2012, 22:25 | |
|
Приведите полный текст задачи. А то из того, что написано, ничего не понятно.
0
|
|
|
0 / 0 / 0
Регистрация: 28.11.2012
Сообщений: 10
|
|
| 29.11.2012, 20:52 [ТС] | |
|
Молодой математический исcследователь Бетти исследует свойства прогрессивных чисел. В ее исследовании, прогрессивными называют такие числа, цифры которых, создают возрастающую последовательность. Например, 333 и 55788 являются прогрессивными числами, а 9123 и 3331 ими не являются.
Среди натуральных чисел, Бетти нашла много прогрессивных. Она дала каждому числу номер. Бетти хочет проверить точность ее работы и попросить программистов назвать n-ое число. Примеры текстовых файлов(вводные, выводные данные): skaitli.in 5 skaitli.out 5 skaitli.in 18 skaitli.out 19 Вводные данные (skaitli.in): В первом ряду, в текстовом файле дано n (1≤n≤2147483647). Выводные данные (skaitli.out): Вывести одно число, значение n-ого числа. Примечание от меня: 1. Числа пронумерованы по возрастанию. 2. Если кто не знает: Цифры-это состовляющие числа(1,2,3,4...). Числа-это комбинации цифр(212,350,231).
0
|
|
|
73 / 72 / 37
Регистрация: 21.11.2009
Сообщений: 258
|
|
| 30.11.2012, 01:31 | |
|
kolobok1, на неё тесты есть, чтобы проверить?
Добавлено через 6 минут --- И цифры все-таки возрастающую последовательность образуют, или неубывающую?
0
|
|
|
0 / 0 / 0
Регистрация: 28.11.2012
Сообщений: 10
|
|
| 02.12.2012, 00:55 [ТС] | |
|
p@$#@, Неубывающую, неубывающую.))
К сожалению, тестов нету. Все, что есть, я написал в условии.
0
|
|
|
181 / 179 / 23
Регистрация: 29.08.2012
Сообщений: 489
|
|
| 02.12.2012, 03:06 | |
|
Может в корне поменять подход к решению? Не тупо перебирать все числа и проверять в них каждую пару циферок? Может надо основать алгоритм на том, что можно заранее сказать сколько прогрессивных чисел присутствует от 1 до заданного числа?
Проверь какой ценой ты используешь процедуру val() - сколько памяти это отжирает. Ты же активно её используешь...
1
|
|
|
0 / 0 / 0
Регистрация: 28.11.2012
Сообщений: 10
|
||||||
| 02.12.2012, 03:45 [ТС] | ||||||
|
Я пытался сделать программу, которая переберает по две цифры, в которой результат это тип стринг, но как то ничего не получилось(уж больно мудрено реализование функции inc для стринга). Пробовал написать без стринга вообще , чтобы не жралась память на Val и Str, но опять же ничего не вышло, так как не сумел придумать как разделять число на десятки без стринга.
Yurek, так ведь сказать сколько от первого до заданного числа последовательных чисел можно, это дано в файле. Меня де спрашивают какое конкретно число находится под данным номером. Добавлено через 11 минут Вот более менее улучшенная версия программы. Изза того, что мне не даны тесты на такие вводные данные как максимальное значение лонгинта, я не могу быть уверен, что программа работает 100 процентно корректно. P.S. Про максимальное значение лонгинта я, конечно, выпендрился. Моя программа слишком тормознута, чтоб такие числа считать, хоть и должна!!!
0
|
||||||
|
181 / 179 / 23
Регистрация: 29.08.2012
Сообщений: 489
|
||||
| 02.12.2012, 14:25 | ||||
Она отрабатывает то, что требуется в задании, но не совсем. При малых значениях n (номер прогрессивного числа) она будет считать как положено - докрутит до соответствующего номера и выдаст значение числа. Коллизия состоит в том, что прогрессивных чисел в диапазоне от 1 до Это является подсказкой, что алгоритм должен быть иным. Возможно разработчик задачи хотел чтобы решающий встретился с подобной сложностью и не шёл по пути простого перебора чисел, а если шёл, то придумал бы как обойти ограничения размерности. Хотя второе наверняка потребует бОльших ресурсов, так что лучше смотреть в сторону других вариантов.
Представляешь какие числа потребуются чтобы найти прогрессивное с номером
0
|
||||
|
447 / 300 / 65
Регистрация: 12.10.2009
Сообщений: 1,162
|
||||||
| 02.12.2012, 23:50 | ||||||
|
эх студенты.... держи и учись
![]()
1
|
||||||
|
181 / 179 / 23
Регистрация: 29.08.2012
Сообщений: 489
|
|
| 03.12.2012, 10:31 | |
|
В первой сотне вроде должно быть 54 прогрессивных числа. По Вашей программе получается 45. Не может ли быть, что забыты числа из первой десятки от 1 до 9-ти ?
И мне кажется, автору хотелось самому решить и требовалась только подсказка, а теперь у него и стимула не будет рыпаться ![]() PS. Опять же, остаётся решить проблему превышения размерности переменных.
0
|
|
|
447 / 300 / 65
Регистрация: 12.10.2009
Сообщений: 1,162
|
|
| 03.12.2012, 16:40 | |
|
я считал что прогрессивные числа состоят из 2 и больше цифр, ну... если бы он хотел сам решить эту задачу то он бы над ней бился пока не нашел бы корректное решение, а тут явно видно что он хочет просто пройти тест, задача не сложна но посути просто нужно взглянуть под другим углом на проблему сравнения цифр числа, может в будущем он вспомнит как я реализовал эту задачу и не будет решать свои тесты грубой силой в лоб
0
|
|
|
181 / 179 / 23
Регистрация: 29.08.2012
Сообщений: 489
|
||||
| 03.12.2012, 18:51 | ||||
0
|
||||
|
73 / 72 / 37
Регистрация: 21.11.2009
Сообщений: 258
|
|
| 06.12.2012, 21:57 | |
|
Вот тут выше говорят про подсказку... Скажем так, даже проверка на прогрессивность за O(1), перебирая все числа не будет работать, ибо это не проходит по ограничениям. Тут хитрее надо
.Если ещё непонятно как делать...
Динамикой, обыкновенной динамикой... не сильно сложной. К сожалению, пишу с чужого компьютера, поэтому код показать не могу. Если не догадаетесь, напишу более подробно суть решения
0
|
|
| 06.12.2012, 21:57 | |
|
Помогаю со студенческими работами здесь
13
Загрузка и отображение большого количества картинок с памяти телефона Очистка памяти при генерации большого количества чисел в ListBox Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|