fork download
  1. # ------------------- 可修改数字 -------------------
  2. dividend = 152127
  3. start = 620
  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.06s 9368KB
stdin
Standard input is empty
stdout
620、625
620*97.1=60202
625*147.08=91925
---
625、630
625*96.84=60525
630*145.4=91602
---
630、620
630*97.1=61173
620*146.7=90954
---
635、620
635*96.56=61315
620*146.47=90811
---
640、620
640*96.29=61625
620*145.97=90501
---
645、620
645*95.88=61842
620*145.62=90284
---
650、620
650*95.4=62010
620*145.35=90117
---
655、620
655*96.12=62958
620*143.82=89168
---
660、620
660*94.8=62568
620*144.45=89559
---
665、620
665*94.6=62909
620*143.9=89218
---