fork download
  1. # ------------------- 可修改数字 -------------------
  2. dividend = 192670
  3. start = 600
  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.17s 9492KB
stdin
Standard input is empty
stdout
600、605
600*135.18=81108
605*184.4=111562
---
605、610
605*133.9=81009
610*183.05=111660
---
610、600
610*134.8=82228
600*184.07=110442
---
615、605
615*133.27=81961
605*182.99=110708
---
620、600
620*133.4=82708
600*183.27=109962
---
625、600
625*132.88=83050
600*182.7=109620
---
630、605
630*132.2=83286
605*180.8=109384
---
635、600
635*132.8=84328
600*180.57=108342
---
640、600
640*131.2=83968
600*181.17=108702
---
645、605
645*130.42=84120
605*179.42=108549
---