Объяснение:
Выйдя из любой точки лабиринта. Надо сделать отметку на его стене и двигаться в произвольном направлении до тупика или перекрёстка в первом случае вернуться назад поставить второй крест свидетельствующий что путь пройден дважды туда и идти в направлении не пройденом ни разу или пройденом один раз во втором идти по направлении не произвольному направлению отмечая каждый перекрёсток на входе и на выходе одним крестомесли на перекрёстке один крест уже имеется то следует идти новым путем если нет то пройденным путем отметив его вторым крестом
Это пока только тестовое, можешь проверить, код сырой
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]))
var
a, b, nod: integer;
begin
read(a, b);
while a * b <> 0 do
if a > b then a := a mod b
else b := b mod a;
nod := a + b;
writeln(nod);
end.
Пример ввода:
1071
462
Пример вывода:
21