fork(11) download
  1. def getNum(digit):
  2. return ord(digit) - ord('0')
  3.  
  4.  
  5. def divisible(n):
  6. if ord(n[-1]) % 2 != 0:
  7. return False
  8.  
  9. digit_sum = sum([getNum(i) for i in n])
  10.  
  11. return digit_sum % 3 == 0
  12.  
  13.  
  14. def getRes(n, mod):
  15. d = []
  16.  
  17. leftMost = -1
  18. rightMost = -1
  19. for index, digit in enumerate(n):
  20. # if current digit can be deleted
  21. if getNum(digit) % 3 == mod:
  22.  
  23. # if the next digit is greater or equal than current
  24. if index != len(n) - 1 and getNum(n[index + 1]) >= getNum(digit):
  25. leftMost = index
  26. break
  27.  
  28. if index == len(n) - 1:
  29. if divisible(n[:-1]):
  30. rightMost = index
  31. else:
  32. rightMost = index
  33. target = 0
  34. if leftMost != -1:
  35. target = leftMost
  36. elif rightMost != -1:
  37. target = rightMost
  38. else:
  39. return -1
  40.  
  41. res = n[:target] + n[target + 1:]
  42. return res
  43.  
  44.  
  45. for _ in range(int(input())):
  46. n = input()
  47.  
  48. if divisible(n):
  49. print(getRes(n, 0))
  50. continue
  51.  
  52. # if last digit is not even
  53. if getNum(n[-1]) % 2 != 0:
  54. # if 0 to n - 1 is divisible by 6
  55. if divisible(n[:-1]):
  56. print(n[:-1])
  57. else:
  58. print(-1)
  59. else:
  60. sum_digits = sum([getNum(i) for i in n])
  61. mod = sum_digits % 3
  62. print(getRes(n, mod))
  63.  
Success #stdin #stdout 0.03s 27704KB
stdin
3
123
100222
10003
stdout
12
00222
-1