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