fork(10) download
  1. one_digit = ["không", "một", "hai", "ba", "bốn", "năm", "sáu", "bảy", "tám", "chín"]
  2. units = ["", " mốt", " hai", " ba", " bốn", " lăm", " sáu", " bảy", " tám", " chín"]
  3. tens = ["linh", "mười"] + [x + " mươi" for x in ["hai", "ba", "bốn", "năm", "sáu", "bảy", "tám", "chín"]]
  4. hundreds = [x + " trăm" for x in one_digit]
  5. bigger = ["", " nghìn", " triệu", " tỉ", " nghìn tỉ", " triệu tỉ", " tỉ tỉ"]
  6.  
  7.  
  8. def read_class(s):
  9. n = int(s)
  10. if len(s) == 1:
  11. return one_digit[n]
  12. elif len(s) == 2:
  13. return tens[n//10] + units[n%10]
  14. else: # len(s) == 3
  15. if s == '000':
  16. return ''
  17. elif (n//10)%10 == 0: # x0y
  18. if n % 10 == 0: # x00
  19. return hundreds[n//100]
  20. else:
  21. return hundreds[n//100] + ' ' + tens[(n//10)%10] + ' ' + one_digit[n%10]
  22. else: # xyz
  23. return hundreds[n//100] + ' ' + tens[(n//10)%10] + units[n%10]
  24.  
  25.  
  26. while True:
  27. try:
  28. s = input()
  29. except:
  30. break
  31.  
  32. s = s.lstrip('0').rstrip('\n')
  33. classes = []
  34. for i in range(len(s)-1, 1, -3):
  35. classes.append(s[i-2:i+1])
  36.  
  37. if len(s) % 3 != 0:
  38. classes.append(s[:len(s)%3])
  39.  
  40. res = ''
  41. for i in range(len(classes)):
  42. named_class = read_class(classes[i])
  43. if named_class != '':
  44. res = named_class + bigger[i] + (' ' * (res != '')) + res
  45.  
  46. print(s, res)
  47.  
Success #stdin #stdout 0.01s 27720KB
stdin
1
3005
34000000000000
stdout
1 một
3005 ba nghìn không trăm linh năm
34000000000000 ba mươi bốn nghìn tỉ