Блог пользователя nurbol

Автор nurbol, 12 лет назад, По-русски

Здраствуте уважаемые юзеры!

Недавно прочитав разбор задачи 131 раунда(div 2)B.Домашняя задача.

Пришло мысл про то:

  • А что если будет задачи типа.

Дается чило N (кол-во цифр в N 10^5) и X.

Далее можно делать эти операций:

1) Менять местами некоторые цифры

2) Удалять некоторые цифры

Нужно вывести максимальное число N которое прошёл через выше описанные операций и делится на число X.

Недавно копался в Wiki и нашёл эту статью.

Придумал решение на некоторые случаи:

Если X = 2: Число делится на 2 тогда и только тогда, когда его последняя цифра делится на 2, то есть является чётной. Решение: Можно понять посмотрев на код. Div_to_2.cpp

Если X = 3: Число делится на 3 тогда и только тогда, когда сумма его цифр делится на 3. Решение: Возьмем все цифры в невозрастающем порядке, если сумма цифр кратна 3, то это и есть ответ. Если остаток от деления вышел 1, то нужно убрать 1 цифру у которой остаток от деления на 3 равен 1. Если такой не нашли то нужно убрать 2 цифры с остатком 2. Аналогично рассматривается случай когда изначальный остаток равен 2. Так-же нужно рассмотреть случай когда остались только нули, в этом случае нужно вывести только 1 ноль. Div_to_3.cpp

Если X = 4: Число делится на 4 тогда и только тогда, когда две его последние цифры составляют число, которое делится на 4. Решение: Можно понять посмотрев на код. Div_to_4.cpp

Если X = 5: Число делится на 5 тогда и только тогда, когда последняя цифра делится на 5, т. е. если она 0 или 5. Решение: Можно понять посмотрев на код. Div_to_5.cpp

Если X = 6: Число делится на 6 тогда и только тогда, когда оно делится и на 2, и на 3 (то есть первым делом получаем максимальное число которое делится на[мы уже это умеем]. Далее получаем число которое делится на 2[мы это тоже умеем]). Решение: Можно понять посмотрев на код. Div_to_6.cpp

Напишите пожалуйста разбор на более сложные случаи 7,8,11,13,14,17.

Полный текст и комментарии »

  • Проголосовать: нравится
  • +8
  • Проголосовать: не нравится