fork download
  1. # ------------------- 可修改数字 -------------------
  2. dividend = 157890
  3. start = 640
  4. end = 700
  5. max_results = 10
  6. # ---------------------------------------------------
  7.  
  8. count = 0
  9. found = []
  10. pairs = set() # 彻底去重
  11.  
  12. # 1. 优先显示整除
  13. for d in range(start, end + 1, 5):
  14. if count >= max_results:
  15. break
  16. if dividend % d == 0:
  17. print(f"{dividend} ÷ {d} = {dividend // d}")
  18. print("---")
  19. count += 1
  20. found.append(d)
  21.  
  22. # 2. 再显示 最多两位小数(能除尽)
  23. for d in range(start, end + 1, 5):
  24. if count >= max_results:
  25. break
  26. if d in found:
  27. continue
  28. if (dividend * 100) % d == 0:
  29. res = dividend / d
  30. print(f"{dividend} ÷ {d} = {res:.2f}".rstrip("0").rstrip("."))
  31. print("---")
  32. count += 1
  33. found.append(d)
  34.  
  35. # 3. 拆分:不重复 + 允许相差50以内
  36. for d in range(start, end + 1, 5):
  37. if count >= max_results:
  38. break
  39. if d in found:
  40. continue
  41.  
  42. for d2 in range(start, end + 1, 5):
  43. if d == d2:
  44. continue
  45.  
  46. # ✅ 去重核心:小的在前,大的在后,只记录一次
  47. key = tuple(sorted((d, d2)))
  48. if key in pairs:
  49. continue
  50.  
  51. best = None
  52. max_a = int(dividend * 100 / d)
  53.  
  54. for a in range(1, max_a):
  55. p1 = d * a / 100
  56. p2 = dividend - p1
  57. if p2 <= 0:
  58. continue
  59.  
  60. if (p2 * 100) % d2 == 0:
  61. val1 = a / 100
  62. val2 = (p2 * 100) / d2 / 100
  63.  
  64. # ✅ 允许相差 50 以内,不需要完全平衡
  65. if abs(val1 - val2) <= 50:
  66. best = (val1, val2, int(p1), int(p2))
  67. break # 找到就用,不纠结最优
  68.  
  69. if best:
  70. val1, val2, p1, p2 = best
  71. print(f"{d}、{d2}")
  72. print(f"{d}*{val1:.2f}".rstrip("0").rstrip(".") + f"={p1}")
  73. print(f"{d2}*{val2:.2f}".rstrip("0").rstrip(".") + f"={p2}")
  74. print("---")
  75. pairs.add(key)
  76. count += 1
  77. break
Success #stdin #stdout 0.08s 9368KB
stdin
Standard input is empty
stdout
640、645
640*97.95=62688
645*147.6=95202
---
645、650
645*97.8=63081
650*145.86=94809
---
650、640
650*98.12=63778
640*147.05=94112
---
655、640
655*97.84=64085
640*146.57=93804
---
660、640
660*97.06=64059
640*146.61=93830
---
665、640
665*97.36=64744
640*145.54=93145
---
670、640
670*96.28=64507
640*145.91=93382
---
675、640
675*96.24=64962
640*145.2=92928
---
680、640
680*95.41=64878
640*145.33=93011
---
685、640
685*95.76=65595
640*144.21=92294
---