Дано целое число. Задача состоит в том, чтобы удалить некоторые цифры и переупорядочить цифры (если необходимо), чтобы полученное целое число было максимально возможным целым числом, которое делится на 3.
Мой алгоритм:
Если само число делится на 3, просто выведите цифры в порядке убывания.
Если число 1 по модулю 3, удалите одно наименьшее di git в целом числе, которое также равно 1 по модулю 3, тогда просто выведите цифры в порядке убывания. Если такого di git нет, удалите две наименьшие цифры, которые равны 2 по модулю 3, а затем просто распечатайте цифры в порядке убывания.
Если число 2 по модулю 3, то аналогичные в случае 2 выше.
n = 223
s = str(n)
if n % 3 == 0:
n = "".join(sorted(str(n), reverse=True))
if n % 3 == 1:
n = "".join(sorted(str(n)))
count = 0
for char in s:
if int(char) % 3 == 1:
s = s.replace(char, '', 1)
count+=1
if count != 0:
n = "".join(sorted(s, reverse=True))
print(n)
else:
count2 = 0
while count2 <= 2:
print('l')
for char in s:
if int(char) % 3 == 2:
s = s.replace(char, '', 1)
count2+=1
n = "".join(sorted(s, reverse=True))
print(n)
Обратите внимание, что я не написал часть кода для случая 3. Я просто проверял n=223
, что является в случае 2.
Я еще не являюсь продвинутым кодировщиком, поэтому некоторая оптимизация (если возможно) будет очень признательна :)
Заранее спасибо.