fork download
  1. def getCheckSum(n):
  2. a = str(n)
  3. a = a[len(a)-1]
  4. return int(a)
  5.  
  6. def getParts(n):
  7. a = str(n)
  8. b = 0
  9. c = []
  10. while b < len(a) - 1:
  11. c.append(a[b])
  12. b += 1
  13. return c
  14.  
  15. def multTwo(n):
  16. length = len(n)
  17. if length % 2 == 0:
  18. a = 1
  19. else:
  20. a = 0
  21. c = n
  22. while a < length:
  23. c[a] = int(c[a])
  24. c[a] *= 2
  25. a += 2
  26. return c
  27.  
  28. def sumAll(n):
  29. a = 0
  30. c = n
  31. while a < len(c):
  32. b = []
  33. x = 0
  34. c[a] = str(c[a])
  35. while x < len(c[a]):
  36. b.append(c[a][x])
  37. x += 1
  38. x = 0
  39. y = 0
  40. while x < len(b):
  41. y += int(b[x])
  42. x += 1
  43. c[a] = y
  44. a += 1
  45. return (9 * sum(c)) % 10
  46.  
  47. def isValid(n):
  48. checkSum = getCheckSum(n)
  49. parts = getParts(n)
  50. parts = multTwo(parts)
  51. sumOfAll = sumAll(parts)
  52. if sumOfAll == checkSum:
  53. return True
  54. else:
  55. return False
  56.  
  57. def notValid(n):
  58. a = str(n)
  59. b = []
  60. c = 0
  61. while c < len(a):
  62. b.append(a[c])
  63. b[c] = int(b[c])
  64. c += 1
  65. c = 0
  66. while c < len(b):
  67. x = False
  68. b[c] += 1
  69. if b[c] == 10:
  70. x = True
  71. b[c] = 0
  72. d = 0
  73. e = ""
  74. while d < len(b):
  75. e += str(b[d])
  76. d += 1
  77. yesno = isValid(e)
  78. if yesno:
  79. return e
  80. b[c] -= 2
  81. if x:
  82. b[c] = 8
  83. x = False
  84. if b[c] == -1:
  85. x = True
  86. b[c] = 9
  87. d = 0
  88. e = ""
  89. while d < len(b):
  90. e += str(b[d])
  91. d += 1
  92. yesno = isValid(e)
  93. if yesno:
  94. return e
  95. b[c] += 1
  96. if x:
  97. b[c] = 0
  98. c += 1
  99.  
  100. def main():
  101. datas = []
  102. answers = []
  103. valids = []
  104. a = 0
  105. while a < 5:
  106. datas.append(input())
  107. if isValid(datas[a]):
  108. valids.append("VALID")
  109. else:
  110. valids.append(notValid(datas[a]))
  111. a += 1
  112. a = 0
  113. while a < 5:
  114. print valids[a]
  115. a += 1
  116.  
  117. main()
Success #stdin #stdout 0.01s 7900KB
stdin
436549127
122539
1119991998
876543219
9100827300650
stdout
426549127
222539
VALID
876443219
9100827300640