Advertisement
FuFsQ

py_v1_t2

Jan 18th, 2021
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.64 KB | None | 0 0
  1. import copy
  2.  
  3. n = input()
  4. state = input()
  5.  
  6. if state == '0':
  7. tc = 1
  8. while True:
  9. ptrn = '1' * len(n)
  10.  
  11. if int(n) > int(ptrn)*tc:
  12. tc += 1
  13. else:
  14. print(int(ptrn)*tc)
  15. break
  16.  
  17. else:
  18. dgs = set([x for x in n])
  19. skipping_1 = False
  20.  
  21. if len(dgs) in (1, 2):
  22. print(n)
  23. skipping_1 = True
  24.  
  25. if not skipping_1:
  26. n = [int(x) for x in n]
  27. result = copy.deepcopy(n)
  28.  
  29. diffs_cnt = 0
  30. mx_char = n[0]
  31. mx_char_idx = 0
  32. c_pos = 1
  33.  
  34. if n[0] != n[1]:
  35. diffs_cnt += 1
  36.  
  37. px_fill = -1
  38. change_pos = -1
  39. for I in range(0, len(n)):
  40. if n[I] > mx_char:
  41. px_fill = min(n[:I]) # n[I]
  42. change_pos = I
  43. break
  44.  
  45. if n[I] < mx_char:
  46. change_pos = I
  47. px_fill = mx_char
  48. break
  49.  
  50. # print(px_fill, change_pos)
  51. #
  52. diffs_before = len(set([x for x in n[:change_pos]]))
  53.  
  54. for O in range(len(n) - 1, diffs_before, -1):
  55. if result[O - 1] < result[O]:
  56. result[O - 1] += 1
  57.  
  58. # print(n)
  59.  
  60. cma_diffs = 0
  61. cmp_sym = n[0]
  62.  
  63. r1 = ''
  64. r2 = ''
  65. for B in range(len(n)):
  66. if result[B] != cmp_sym:
  67. cma_diffs += 1
  68. cmp_sym = n[B]
  69.  
  70. if cma_diffs == 2 or (B + 1 == len(n)):
  71. gfs = None
  72.  
  73. # lst_p = n[-1]
  74. # lst_p_i = len(n) - 1
  75. pfi = False
  76. answ = ''
  77. for ci in range(len(n) - 1, 0, -1):
  78. if n[ci] < n[ci-1] and (len(set(n[:ci])) == 2):
  79. cr = result[ci - 1]
  80. while result[ci] == cr:
  81. ci -= 1
  82. # n[ci] = max(result[:ci])
  83. n[ci] = result[ci]
  84. # print(''.join(chr(x + ord('0')) for x in n))
  85. answ = ''.join(chr(x + ord('0')) for x in n)
  86. pfi = True
  87.  
  88. if not pfi:
  89. # print(''.join(chr(ord('0') + x) for x in n[:B]) + chr(min(n[:B]) + ord('0')) * (len(n) - B))
  90. # r1 = ''.join(chr(ord('0') + x) for x in n[:B]) + chr(min(n[:B]) + ord('0')) * (len(n) - B)
  91. answ = ''.join(chr(ord('0') + x) for x in n[:B]) + chr(min(n[:B]) + ord('0')) * (len(n) - B)
  92. # print(r1)
  93. # break
  94. print(answ)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement