fork download
  1. # ------------------- 可修改数字 -------------------
  2. dividend = 171240
  3. start = 620
  4. end =690
  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.06s 9332KB
stdin
Standard input is empty
stdout
620、625
620*113.25=70215
625*161.64=101025
---
625、630
625*112.2=70125
630*160.5=101115
---
630、620
630*112.44=70837
620*161.94=100402
---
635、620
635*112.16=71221
620*161.32=100018
---
640、620
640*111.4=71296
620*161.2=99944
---
645、620
645*111.44=71878
620*160.26=99361
---
650、620
650*110.64=71916
620*160.2=99324
---
655、620
655*110.6=72443
620*159.35=98797
---
660、620
660*109.64=72362
620*159.48=98877
---
665、620
665*109.72=72963
620*158.51=98276
---