fork download
  1. # ------------------- 可修改数字 -------------------
  2. dividend = 193020
  3. start = 640
  4. end = 800
  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.12s 9496KB
stdin
Standard input is empty
stdout
193020 ÷ 750 = 257.36
---
640、645
640*125.67=80428
645*174.56=112591
---
645、650
645*124.3=80173
650*173.61=112846
---
650、640
650*125.04=81276
640*174.6=111744
---
655、640
655*125.6=82268
640*173.05=110752
---
660、640
660*123.96=81813
640*173.76=111206
---
665、640
665*124=82460
640*172.75=110560
---
670、640
670*122.96=82383
640*172.87=110636
---
675、640
675*123.68=83484
640*171.15=109536
---
680、640
680*122.14=83055
640*171.82=109964
---