Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
18 / 11 / 5
Регистрация: 27.05.2013
Сообщений: 36

A+B=C, или сломай мозги. Работа с огромными числами

30.05.2013, 13:09. Показов 2616. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!
Тут я уже второй раз, с той же самой просьбой - помочь решить задачу. В этот раз задача посложнее (надо же уровень повышать), и я её что-то никак не осилю. Взял её из регионального этапа Всероссийской олимпиады школьников по информатике.
Задача 3. «A+B=C»
Ограничение по времени: 2 секунды

Часто для пробного тура на различных олимпиадах по информатике предлагается задача «A + B», в которой по заданным целым числам A и B требуется найти их сумму. При проведении городской олимпиады по информатике председатель жюри решил сам подготовить тесты для такой задачи. Для этого он использовал свою оригинальную методику, которая заключалась в следующем: сначала готовятся предполагаемые правильные ответы, а затем подбираются входные данные, соответствующие этим ответам.
Пусть председатель жюри выбрал число C, запись которого состоит из n десятичных цифр и не начинается с нуля. Теперь он хочет подобрать такие целые положительные числа A и B, чтобы их сумма была равна C, и запись каждого из них также состояла из n десятичных цифр и не начиналась с нуля. В дополнение к этому председатель жюри старается подобрать такие числа A и B, чтобы каждое из них было красивым. Красивым в его понимании является число, запись которого не содержит двух одинаковых подряд идущих цифр. Например, число 1272 считается красивым, а число 1227 — нет.
Требуется написать программу, которая для заданного натурального числа C вычисляет количество пар красивых положительных чисел A и B, сумма которых равна C. Поскольку количество пар красивых чисел может быть большим, необходимо вывести остаток от деления этого количества на число 109+7.

Формат входных данных
Входные данные содержит одно целое положительное число C. Число C не начинается с нуля. Количество цифр в записи числа С не превышает 10 000.
Формат выходных данных
Выходные данные должен содержать одно целое число — остаток от деления количества искомых пар красивых чисел A и B на число 109+7.
Я знаю, что к этой олимпиаде есть ответы, но, собственно, я не хочу смотреть готовое решение чужого человека без каких-либо собственных попыток. Если совместными усилиями так и не решим - можно будет разобрать готовое решение.

Теперь, до чего додумался я. Не очень много, конечно, но кое-что есть.
Итак, задача заключается в том, чтобы найти кол-во пар чисел (красивых), и их сумма должна быть равна числу С. Для примера, пусть число С - 22. Чтобы найти кол-во пар, вычтем из него самую большую его разрядную единицу (в данном случае это 10).
22 - 10 = 12 (Если было бы 222, то вычитали бы 100, и т.д.)
Теперь у нас есть 2 числа - 10 и 12. Пары, которые они могут составить:
10+12 = 22
11+11 = 22
12+10 = 22
Всего 3. Из них некрасивых - 1.
3-1 = 2, это и есть ответ.
Нам нужно узнать кол-во всех таких возможных пар, потом "выдернуть" из них кол-во некрасивых, и вычесть. Но как это сделать с помощью JS я вообще без понятия)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.05.2013, 13:09
Ответы с готовыми решениями:

Работа с огромными числами
Всех приветствую. Суть задачи - написать функцию для сокращения огромных чисел. По принципу отбрасывания каждых трех последующих нулей. ...

Работа с огромными числами
Как работать с такими числами как 10^1000 Пользователь вводит число n, а программа должна определять делится ли это число целочисленно...

Корректная работа с огромными рациональными числами.
Здравствуйте Форумчане, как вы считаете, полезно ли будет, если я выложу на форум мой проект, помогающий работать с огромными числами,...

7
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
30.05.2013, 13:47
предположу, что в вашем примере "красивых" ответов всего только 1
ибо надо найти "пару чисел"
а 12+10 или 10+12 - это всего одна пара, т.к. "от перемены мест слагаемых сумма не меняется"
------------

-- число С должно состоять минимум из 2-х цифр и не начинаться не только с нуля. но и с единицы,
иначе в парах слагаемых не будет того же n количества цифр, что и в С

-- вы уверены, что это задача именно для JS?
судя по "временному ограничению" - это задача для языков типа C++ и Java
0
18 / 11 / 5
Регистрация: 27.05.2013
Сообщений: 36
30.05.2013, 14:00  [ТС]
Цитата Сообщение от kalabuni Посмотреть сообщение
предположу, что в вашем примере "красивых" ответов всего только 1
ибо надо найти "пару чисел"
Имеется ввиду разные пары чисел А и В, а от замены значения переменных меняется и кол-во решений. У этой задачи ниже было представлено след. рассуждение, с этим же числом:
Рассуждение
Число 22 можно представить в виде суммы двузначных чисел тремя способами: 10 + 12, 11 + 11, 12 + 10. Способ 11 + 11 не подходит, поскольку число 11 не является красивым. Следовательно, ответ для числа 22 равен 2.


Цитата Сообщение от kalabuni Посмотреть сообщение
-- вы уверены, что это задача именно для JS?
судя по "временному ограничению" - это задача для языков типа C++ и Java
Я закрепляю знание именно JS, и хочу решить данную задачу, неважно, для какого она языка. По-моему, возможностей JS хватает по горло для решения подобных задач.

Цитата Сообщение от kalabuni Посмотреть сообщение
-- число С должно состоять минимум из 2-х цифр и не начинаться не только с нуля. но и с единицы,
иначе в парах слагаемых не будет того же n количества цифр, что и в С
Согласен
0
 Аватар для dr.curse
404 / 360 / 36
Регистрация: 11.10.2010
Сообщений: 1,907
30.05.2013, 14:22
Цитата Сообщение от Gealz Посмотреть сообщение
Нам нужно узнать кол-во всех таких возможных пар, потом "выдернуть" из них кол-во некрасивых, и вычесть. Но как это сделать с помощью JS я вообще без понятия)
у вас так неполучится, поскольку будет работать очень долго, поскольку минимум за O(n^2) можно будет найти все пары, + к этому еще и добавится длинка
а вообще задача на ДП
0
18 / 11 / 5
Регистрация: 27.05.2013
Сообщений: 36
30.05.2013, 14:31  [ТС]
aram_gyumri, не подскажете, как можно начать понимать ДП больше? Просто решая задачи?
0
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
30.05.2013, 16:53
Цитата Сообщение от Gealz Посмотреть сообщение
Я закрепляю знание именно JS, и хочу решить данную задачу, неважно, для какого она языка. По-моему, возможностей JS хватает по горло для решения подобных задач.
браузер будет зависать и выдавать предложение "Остановить сценарий"
так что надо на системном js делать - в принципе, всё тоже самое, сохраняете в виде имя.js и запускаете двойным кликом

найти количество всех возможных красивых пар - это полный перебор
затрудняюсь даже предположить - какое время для этого потребуется, особливо если ввести число из 10000 цифр
0
 Аватар для dr.curse
404 / 360 / 36
Регистрация: 11.10.2010
Сообщений: 1,907
30.05.2013, 17:42
Цитата Сообщение от kalabuni Посмотреть сообщение
найти количество всех возможных красивых пар - это полный перебор
затрудняюсь даже предположить - какое время для этого потребуется, особливо если ввести число из 10000 цифр
можно решить и с помощью ДП, за приемлемое время

Цитата Сообщение от Gealz Посмотреть сообщение
aram_gyumri, не подскажете, как можно начать понимать ДП больше? Просто решая задачи?
я сам честно говоря только начинаю учить ДП
0
18 / 11 / 5
Регистрация: 27.05.2013
Сообщений: 36
30.05.2013, 19:09  [ТС]
Цитата Сообщение от aram_gyumri Посмотреть сообщение
я сам честно говоря только начинаю учить ДП
Забавно)

aram_gyumri,
kalabuni,
Если у вас будут какие-либо мыслишки по решению, пишите сюда. Я, как только решу, выложу решение
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.05.2013, 19:09
Помогаю со студенческими работами здесь

Оптимизация циклов с огромными числами
Всем здравствуйте! В общем, реализую алгоритм выработки электронной подписи по ГОСТ 34-10.2012. Приходится работать с целыми числами,...

Работа с огромными файлами
Текстовик примерно размером в 20гб. При загрузке и поиске файла выскакивает ошибка Out you memory оперативы 16гб как можно обойти?

Работа с огромными .txt
Если огромный .txt файл, в котором более 30000 строчек. Загружать каждую строку просто бред, но при этом может понадобится загрузить...

работа с огромными графами
здравствуйте! мне нужно работать с графами размером порядка 1 000 000 вершин. планирую использовать C++ или C#. такой большой граф,...

НОД или работа с большими числами
Здравствуйте. Помогите с алгоритмом нахождения НОД(а,с), где 1<= а,с<=1018 . Как работать с такими большими числами? (Алгоритм Евклида я...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru