# ====================== 配置区 ======================
total = 147 # 可改:144.6 / 241.64 / 任意总数
price = 65 # 可改:64.5 / 65 / 任意单价
# ====================================================
import random
random.seed(1)
# 核心:单个金额不能超过1000元
max_single = round(1000 / price, 2)
count = int(total / max_single) + 1
nums = []
used = set()
base = round(total / count, 2)
# 生成:均匀 + 不超1000 + 合规 + 不重复
for i in range(count):
val = round(base + i * 0.02, 2)
# 强制不超过最大值(永远不超1000)
if val > max_single:
val = max_single
# 保证乘积是两位小数
for _ in range(500):
if (val * price * 100).is_integer():
break
val = round(val - 0.01, 2)
# 保证不重复
while val in used:
val = round(val - 0.02, 2)
used.add(val)
nums.append(val)
# 校准总和
current_sum = sum(nums)
diff = round(total - current_sum, 2)
for i in range(len(nums)):
new_val = round(nums[i] + diff, 2)
if 0 < new_val <= max_single and new_val not in used:
nums[i] = new_val
break
# 输出(你要的干净格式)
for num in nums:
print(f"{num:.2f}")
print(f"\n总和校验:{sum(nums):.2f}")
IyA9PT09PT09PT09PT09PT09PT09PT09IOmFjee9ruWMuiA9PT09PT09PT09PT09PT09PT09PT09CnRvdGFsID0gMTQ3ICAgICMg5Y+v5pS577yaMTQ0LjYgLyAyNDEuNjQgLyDku7vmhI/mgLvmlbAKcHJpY2UgPSA2NSAgICAgIyDlj6/mlLnvvJo2NC41IC8gNjUgLyDku7vmhI/ljZXku7cKIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgppbXBvcnQgcmFuZG9tCnJhbmRvbS5zZWVkKDEpCgojIOaguOW/g++8muWNleS4qumHkemineS4jeiDvei2hei/hzEwMDDlhYMKbWF4X3NpbmdsZSA9IHJvdW5kKDEwMDAgLyBwcmljZSwgMikKY291bnQgPSBpbnQodG90YWwgLyBtYXhfc2luZ2xlKSArIDEKbnVtcyA9IFtdCnVzZWQgPSBzZXQoKQpiYXNlID0gcm91bmQodG90YWwgLyBjb3VudCwgMikKCiMg55Sf5oiQ77ya5Z2H5YyAICsg5LiN6LaFMTAwMCArIOWQiOinhCArIOS4jemHjeWkjQpmb3IgaSBpbiByYW5nZShjb3VudCk6CiAgICB2YWwgPSByb3VuZChiYXNlICsgaSAqIDAuMDIsIDIpCgogICAgIyDlvLrliLbkuI3otoXov4fmnIDlpKflgLzvvIjmsLjov5zkuI3otoUxMDAw77yJCiAgICBpZiB2YWwgPiBtYXhfc2luZ2xlOgogICAgICAgIHZhbCA9IG1heF9zaW5nbGUKCiAgICAjIOS/neivgeS5mOenr+aYr+S4pOS9jeWwj+aVsAogICAgZm9yIF8gaW4gcmFuZ2UoNTAwKToKICAgICAgICBpZiAodmFsICogcHJpY2UgKiAxMDApLmlzX2ludGVnZXIoKToKICAgICAgICAgICAgYnJlYWsKICAgICAgICB2YWwgPSByb3VuZCh2YWwgLSAwLjAxLCAyKQoKICAgICMg5L+d6K+B5LiN6YeN5aSNCiAgICB3aGlsZSB2YWwgaW4gdXNlZDoKICAgICAgICB2YWwgPSByb3VuZCh2YWwgLSAwLjAyLCAyKQogICAgdXNlZC5hZGQodmFsKQogICAgbnVtcy5hcHBlbmQodmFsKQoKIyDmoKHlh4bmgLvlkowKY3VycmVudF9zdW0gPSBzdW0obnVtcykKZGlmZiA9IHJvdW5kKHRvdGFsIC0gY3VycmVudF9zdW0sIDIpCmlmIGFicyhkaWZmKSA+IDAuMDE6CiAgICBmb3IgaSBpbiByYW5nZShsZW4obnVtcykpOgogICAgICAgIG5ld192YWwgPSByb3VuZChudW1zW2ldICsgZGlmZiwgMikKICAgICAgICBpZiAwIDwgbmV3X3ZhbCA8PSBtYXhfc2luZ2xlIGFuZCBuZXdfdmFsIG5vdCBpbiB1c2VkOgogICAgICAgICAgICBudW1zW2ldID0gbmV3X3ZhbAogICAgICAgICAgICBicmVhawoKIyDovpPlh7rvvIjkvaDopoHnmoTlubLlh4DmoLzlvI/vvIkKZm9yIG51bSBpbiBudW1zOgogICAgcHJpbnQoZiJ7bnVtOi4yZn0iKQoKcHJpbnQoZiJcbuaAu+WSjOagoemqjO+8mntzdW0obnVtcyk6LjJmfSIp