Школа программиста

Забыли пароль?
[задачи] [курсы] [олимпиады] [регистрация]
Логин:   Пароль:    
Скрыть меню
О школе
Правила
Олимпиады
Фотоальбом
Гостевая
Форум
Архив олимпиад
Архив задач
Состояние системы
Рейтинг
Курсы
Новичкам
Работа в системе
Курсы ККДП
Дистрибутивы
Статьи
Ссылки


 
[Вернуться к задаче]   1
  1  Странник, 22 апреля 2021 г. 18:51:29
     ... значений; 2) когда количество уравнений в группе четное, тогда при замыкании получается что-то вроде a0 = a0 + d, то есть если d не 0, то решений нет, а иначе множество решений a0, a1, ..., am ограничивается их диапазоном возможных значений. Диапазон возможных значений для ai от 0 до 9, если цифра не самая старшая, иначе от 1 до 9.
  2  Странник, 22 апреля 2021 г. 18:50:47
     Hint!!! Спойлер!!! Продолжение!!! Второй способ: давайте запишем искомое число в виде последовательности десятичных цифр, под ним запишем его сдвиг на k, а затем начнем складывать в столбик. В процессе сложения могут появляться переносы. Также нам известен результат сложения. Получается, что неизвестные разряды и неизвестные переносы можно связать вместе и записать в виде системы линейных уравнений (на листике это будет наглядно). А дальше можно просто перебрать все возможные комбинации переносов - один перенос имеет значение 0 или 1, так что количество комбинаций O(2^log10(n)). Дальше можно заметить, что уравнения можно разделить на замкнутые группы наподобие a0+a1=c0, a1+a2=c1, a2+a3=c2, ..., am+a0=cm. Здесь можно каждую неизвестную ai выразить через a0 по кругу и замкнуть круг на последнем уравнении. И там появляется два случая: 1) когда количество уравнений в группе нечетное, a0 выражается однозначно - если a0 получилось целым, то можно найти все остальные неизвестные ai и проверить на диапазон возможных
  3  Странник, 22 апреля 2021 г. 17:56:18
     Hint!!! Спойлер!!! Эту задачу можно решить как минимум двумя способами. Во-первых, можно перебрать длину l исходного числа - тут всего два варианта: len(n) и len(n)-1 (сами подумайте, почему это так). При фиксированной длине числа решаем задачу. Первый способ: представить искомое число в виде двух частей x и y - старшей и младшей (старшая имеет длину k, младшая l-k), затем поменять местами младшую часть со старшей (получить число yx) - это и есть сдвиг на k. Затем сложить xy с yx и получить n. Далее сгруппировать слагаемые и получить линейное диофантово уравнение с неизвестными x, y. Осталось его решить с некоторыми ограничениями - длина числа x составляет ровно k, то есть находится от 10^(k-1) до 10^k-1, а длина числа y с лидирующими нулями составляет l-k, то есть находится в промежутке от 0 до 10^(l-k)-1.
  4  Рахимов Ворис, 18 декабря 2020 г. 15:37:23
     то что я сказал ниже это TL. лучше если у вас нет идей то надо искать каждую цифру N с конца)
  5  Рахимов Ворис, 18 декабря 2020 г. 14:15:17
     if (k <= 8) перебираем сдвигаемую часть , иначе вторую часть )
  6  Лукьянов Иван, 26 января 2016 г. 0:28:04
     Обычно такие задачи стОят на этом сайте гораздо больше баллов, чем 50.
  7  Тер Саркисов Богдан Олегович, 22 июня 2014 г. 1:18:09
     Диофантово уравнение решить что ли?
 1

Чтобы оставить сообщение необходимо зарегистрироваться и авторизоваться!

Красноярский краевой Дворец пионеров, (c)2006 - 2026, ИНН 246305493507, E-mail: admin@acmp.ru