В
Все
У
Українська література
Г
Геометрия
Д
Другие предметы
Э
Экономика
Г
География
О
ОБЖ
М
Математика
М
МХК
Х
Химия
Қ
Қазақ тiлi
Л
Литература
У
Українська мова
О
Обществознание
Ф
Физика
А
Английский язык
А
Алгебра
И
История
Б
Беларуская мова
Б
Биология
М
Музыка
П
Право
И
Информатика
П
Психология
В
Видео-ответы
Н
Немецкий язык
Ф
Французский язык
О
Окружающий мир
Р
Русский язык
angelinagalak
angelinagalak
11.07.2020 09:02 •  Информатика

разобраться, как это решить. Буду благодарен, если на С++ или Python. "Даны n и m. Нужно найти минимальное число строго больше n с суммой цифр m.
При том, что длина числа n <= 30000, m <= 270000."
Из-за большой длины числа просто перебором найти ответ нельзя. Не знаю что делать.​

Ответ:
lflflflfgh
lflflflfgh
05.02.2021 13:17

Это пока только тестовое, можешь проверить, код сырой

n,m = map(int, input().split())

n = str(n)

sum_num_n = sum([int(i) for i in n])

if sum_num_n < m:

   def count_num(x):

       if x/9 > x//9 :

           return x//9 + 1

       return x//9

   count = count_num(m)

   n += '0'*(count-len(n))

   n = list(n[::-1])

   i = 0

   nujno = m - sum_num_n

   while nujno!= 0:

       if nujno+int(n[i]) < 9:

           n[i] = str(int(n[i])+nujno)

           break

       else:

           nujno-=9-int(n[i])

           n[i] = '9'

       i+=1

   print(''.join(n[::-1]))

else:

   n = list(n[::-1])

   i = 0

   nujno = m - sum_num_n

   while True:

       if i == len(n)-1 :

           n.append('0')

       if n[i+1] == 9:

           continue

       else:

           n[i+1] = str(int(n[i+1])+1)

           nujno-=1

           if int(n[i])+nujno > 0:

               n[i] = str(int(n[i])+nujno)

               break

           else:

               nujno+=int(n[i])

               n[i] = '0'

       if nujno == 0:

           break

       i+=1

   print(''.join(n[::-1]))

   

0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?