Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import copy
- n = input()
- state = input()
- if state == '0':
- tc = 1
- while True:
- ptrn = '1' * len(n)
- if int(n) > int(ptrn)*tc:
- tc += 1
- else:
- print(int(ptrn)*tc)
- break
- else:
- dgs = set([x for x in n])
- skipping_1 = False
- if len(dgs) in (1, 2):
- print(n)
- skipping_1 = True
- if not skipping_1:
- n = [int(x) for x in n]
- result = copy.deepcopy(n)
- diffs_cnt = 0
- mx_char = n[0]
- mx_char_idx = 0
- c_pos = 1
- if n[0] != n[1]:
- diffs_cnt += 1
- px_fill = -1
- change_pos = -1
- for I in range(0, len(n)):
- if n[I] > mx_char:
- px_fill = min(n[:I]) # n[I]
- change_pos = I
- break
- if n[I] < mx_char:
- change_pos = I
- px_fill = mx_char
- break
- # print(px_fill, change_pos)
- #
- diffs_before = len(set([x for x in n[:change_pos]]))
- for O in range(len(n) - 1, diffs_before, -1):
- if result[O - 1] < result[O]:
- result[O - 1] += 1
- # print(n)
- cma_diffs = 0
- cmp_sym = n[0]
- r1 = ''
- r2 = ''
- for B in range(len(n)):
- if result[B] != cmp_sym:
- cma_diffs += 1
- cmp_sym = n[B]
- if cma_diffs == 2 or (B + 1 == len(n)):
- gfs = None
- # lst_p = n[-1]
- # lst_p_i = len(n) - 1
- pfi = False
- answ = ''
- for ci in range(len(n) - 1, 0, -1):
- if n[ci] < n[ci-1] and (len(set(n[:ci])) == 2):
- cr = result[ci - 1]
- while result[ci] == cr:
- ci -= 1
- # n[ci] = max(result[:ci])
- n[ci] = result[ci]
- # print(''.join(chr(x + ord('0')) for x in n))
- answ = ''.join(chr(x + ord('0')) for x in n)
- pfi = True
- if not pfi:
- # print(''.join(chr(ord('0') + x) for x in n[:B]) + chr(min(n[:B]) + ord('0')) * (len(n) - B))
- # r1 = ''.join(chr(ord('0') + x) for x in n[:B]) + chr(min(n[:B]) + ord('0')) * (len(n) - B)
- answ = ''.join(chr(ord('0') + x) for x in n[:B]) + chr(min(n[:B]) + ord('0')) * (len(n) - B)
- # print(r1)
- # break
- print(answ)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement