from itertools import combinations
import threading
from collections import defaultdict
import math
from multiprocessing import Pool
# 配置参数(优化阈值)
TARGET = 241327 # 目标值
BASE_VALUES = [36.5, 41.5, 59,68.5, 74, 91.5] # 基础系数列表
FLUCTUATION = 1.0 # 系数波动范围
MAX_SOLUTIONS = 3 # 每个组合的最大解数量
SOLVER_TIMEOUT = 180 # 求解超时时间(秒)
THREE_VAR_THRESHOLD = 259000 # 使用三个变量的阈值(调整为259000)
PRODUCT_RANGE_THRESHOLD = 125000 # 乘积范围限制阈值(调整为125000)
HIGH_TARGET_THRESHOLD = 259000 # 更高目标值阈值(调整为259000)
SHOW_PROGRESS = True # 是否显示进度
MAX_SOLUTIONS_PER_COMB = 100 # 每个组合的最大解数量,用于提前终止
USE_MULTIPROCESSING = True # 是否使用多进程加速
def is_valid_product(p):
"""检查单个乘积是否在有效范围内"""
if TARGET > PRODUCT_RANGE_THRESHOLD: # TARGET > 125000
if TARGET > HIGH_TARGET_THRESHOLD: # TARGET > 259000
return p <= 125000 # 单个乘积上限
else: # 125000 < TARGET <= 259000
return 74000 <= p <= 125000 # 单个乘积范围
else: # TARGET <= 125000
return True # 小目标值取消所有限制
def find_single_variable_solutions(values):
"""查找单个数的解(a*x = TARGET)"""
solutions = []
for a in values:
quotient = TARGET / a
if quotient != int(quotient):
continue
x = int(quotient)
if 1 <= x <= 10000 and is_valid_product(a * x):
solutions.append((a, x))
if len(solutions) >= MAX_SOLUTIONS:
break
return solutions
def find_two_variable_solutions(values):
"""优化的双变量求解算法"""
solutions = defaultdict(list)
for i, a in enumerate(values):
for b in values[i:]:
seen_xy = set()
max_x
= math.
floor((TARGET
- b
) / a
) min_x
= max
(1, math.
ceil((TARGET
- b
* 10000) / a
))
if max_x < min_x:
continue
x_count = max_x - min_x + 1
x_step = max(1, x_count // 1000)
for x in range(min_x, max_x + 1, x_step):
remainder = TARGET - a * x
if remainder < b:
break
if remainder > b * 10000:
continue
if remainder % b == 0:
y = remainder // b
if 1 <= y <= 10000 and is_valid_product(b * y):
xy_pair = (x, y) if a <= b else (y, x)
if xy_pair not in seen_xy:
seen_xy.add(xy_pair)
solutions[(a, b)].append((a, x, b, y))
if len(solutions[(a, b)]) >= MAX_SOLUTIONS_PER_COMB:
break
return solutions
def process_three_var_combination(args):
"""处理三变量组合的辅助函数,用于并行计算"""
a, b, c, value_ranges, target = args
solutions = []
seen_xyz = set()
min_x, max_x = value_ranges[a]
x_count = max_x - min_x + 1
x_step = max(1, x_count // 1000)
for x in range(min_x, max_x + 1, x_step):
ax = a * x
if not is_valid_product(ax):
continue
remainder1 = target - ax
if remainder1 < 0:
break
max_y
= math.
floor((remainder1
- c
) / b
) min_y
= max
(1, math.
ceil((remainder1
- c
* 10000) / b
))
if max_y < min_y:
continue
y_count = max_y - min_y + 1
y_step = max(1, y_count // 100)
for y in range(min_y, max_y + 1, y_step):
by = b * y
if not is_valid_product(by):
continue
remainder2 = remainder1 - by
if remainder2 < 0:
break
if remainder2 > c * 10000:
continue
if remainder2 % c == 0:
z = remainder2 // c
if 1 <= z <= 10000 and is_valid_product(c * z):
xyz_tuple = tuple(sorted([x, y, z]))
if xyz_tuple not in seen_xyz:
seen_xyz.add(xyz_tuple)
solutions.append((a, x, b, y, c, z))
if len(solutions) >= MAX_SOLUTIONS_PER_COMB:
return solutions
return solutions
def find_three_variable_solutions(values):
"""优化的三变量求解算法,使用并行计算"""
solutions = defaultdict(list)
sorted_values = sorted(values)
# 预计算每个系数的有效范围
value_ranges = {}
for a in sorted_values:
min_x
= max
(1, math.
ceil(74000 / a
)) max_x
= min
(10000, math.
floor(125000 / a
)) value_ranges[a] = (min_x, max_x)
combinations_list = []
for i, a in enumerate(sorted_values):
for j in range(i + 1, len(sorted_values)):
b = sorted_values[j]
for k in range(j + 1, len(sorted_values)):
c = sorted_values[k]
combinations_list.append((a, b, c, value_ranges, TARGET))
if USE_MULTIPROCESSING:
with Pool() as pool:
results = pool.map(process_three_var_combination, combinations_list)
for i, (a, b, c, _, _) in enumerate(combinations_list):
if results[i]:
solutions[(a, b, c)] = results[i]
else:
total_combinations = len(combinations_list)
for i, (a, b, c, _, _) in enumerate(combinations_list):
res = process_three_var_combination((a, b, c, value_ranges, TARGET))
if res:
solutions[(a, b, c)] = res
if SHOW_PROGRESS and i % 10 == 0:
print(f"\r三变量组合进度: {i}/{total_combinations} 组", end='')
if SHOW_PROGRESS and not USE_MULTIPROCESSING:
print(f"\r三变量组合进度: {total_combinations}/{total_combinations} 组 - 完成")
return solutions
def find_balanced_solutions(solutions, var_count, num=2):
"""从所有解中筛选出最平衡的解"""
if var_count == 1 or not solutions:
return solutions
balanced = []
for sol in solutions:
vars = sol[1::2] # 获取解中的变量值
diff = max(vars) - min(vars) # 计算变量之间的最大差值
balanced.append((diff, sol))
# 按差值排序,返回差值最小的解
return [s for _, s in sorted(balanced, key=lambda x: x[0])[:num]]
def find_original_solutions(solutions, balanced_solutions, num=3):
"""从剩余解中获取原始顺序的解"""
if not solutions:
return []
remaining = [s for s in solutions if s not in balanced_solutions]
return remaining[:num]
def display_solutions(solutions_dict, var_count):
"""优化的解显示函数"""
if not solutions_dict:
return
print(f"\n找到 {len(solutions_dict)} 组{var_count}变量解:")
for i, (coeffs, pair_solutions) in enumerate(sorted(solutions_dict.items()), 1):
balanced = find_balanced_solutions(pair_solutions, var_count)
original = find_original_solutions(pair_solutions, balanced)
all_display = balanced + original
if var_count == 1:
a = coeffs
print(f"\n{i}. 组合: a={a} ({len(pair_solutions)} 个有效解)")
elif var_count == 2:
a, b = coeffs
print(f"\n{i}. 组合: a={a}, b={b} ({len(pair_solutions)} 个有效解)")
else:
a, b, c = coeffs
print(f"\n{i}. 组合: a={a}, b={b}, c={c} ({len(pair_solutions)} 个有效解)")
for j, sol in enumerate(all_display, 1):
tag = "[平衡解]" if j <= len(balanced) else "[原始解]"
if var_count == 1:
a, x = sol
print(f" {j}. x={x}, a*x={a*x:.1f}, 总和={a*x:.1f} {tag}")
elif var_count == 2:
a, x, b, y = sol
print(f" {j}. x={x}, y={y}, a*x={a*x:.1f}, b*y={b*y:.1f}, 总和={a*x + b*y:.1f} {tag}")
else:
a, x, b, y, c, z = sol
print(f" {j}. x={x}, y={y}, z={z}, "
f"a*x={a*x:.1f}, b*y={b*y:.1f}, c*z={c*z:.1f}, "
f"总和={a*x + b*y + c*z:.1f} {tag}")
def run_with_timeout(func, args=(), kwargs=None, timeout=SOLVER_TIMEOUT):
"""运行函数并设置超时限制"""
if kwargs is None:
kwargs = {}
result = []
error = []
def wrapper():
try:
result.append(func(*args, **kwargs))
except Exception as e:
error.append(e)
thread = threading.Thread(target=wrapper)
thread.daemon = True
thread.start()
thread.join(timeout)
if thread.is_alive():
print(f"警告: {func.__name__} 超时({timeout}秒),跳过此方法")
return None
if error:
return result[0]
def main():
print(f"目标值: {TARGET}")
# 生成波动后的系数
FLUCTUATED_VALUES = [round(v - FLUCTUATION, 1) for v in BASE_VALUES]
# 尝试基础系数
print(f"\n==== 尝试基础系数 ====")
# 目标值75085 < 259000,会按顺序尝试单、双、三变量解
base_solutions = {
'single': run_with_timeout(find_single_variable_solutions, args=(BASE_VALUES,)),
'two': run_with_timeout(find_two_variable_solutions, args=(BASE_VALUES,)),
'three': []
}
has_solution = False
# 显示单变量解
if base_solutions['single']:
has_solution = True
display_solutions({a: [sol] for a, sol in zip(BASE_VALUES, base_solutions['single']) if sol}, 1)
# 显示双变量解
if base_solutions['two'] and len(base_solutions['two']) > 0:
has_solution = True
display_solutions(base_solutions['two'], 2)
# 单变量和双变量都无解时,尝试三变量解
if not has_solution:
print(f"\n==== 单变量和双变量无解,尝试三变量解 ====")
base_solutions['three'] = run_with_timeout(find_three_variable_solutions, args=(BASE_VALUES,))
if base_solutions['three'] and len(base_solutions['three']) > 0:
has_solution = True
display_solutions(base_solutions['three'], 3)
if has_solution:
print(f"\n使用基础系数列表,共找到有效解")
return
# 如果基础系数没有找到解,尝试波动系数
print(f"\n==== 尝试波动系数 ====")
fluctuated_solutions = {
'single': run_with_timeout(find_single_variable_solutions, args=(FLUCTUATED_VALUES,)),
'two': run_with_timeout(find_two_variable_solutions, args=(FLUCTUATED_VALUES,)),
'three': []
}
has_solution = False
# 显示单变量解
if fluctuated_solutions['single']:
has_solution = True
display_solutions({a: [sol] for a, sol in zip(FLUCTUATED_VALUES, fluctuated_solutions['single']) if sol}, 1)
# 显示双变量解
if fluctuated_solutions['two'] and len(fluctuated_solutions['two']) > 0:
has_solution = True
display_solutions(fluctuated_solutions['two'], 2)
# 单变量和双变量都无解时,尝试三变量解
if not has_solution:
print(f"\n==== 单变量和双变量无解,尝试三变量解 ====")
fluctuated_solutions['three'] = run_with_timeout(find_three_variable_solutions, args=(FLUCTUATED_VALUES,))
if fluctuated_solutions['three'] and len(fluctuated_solutions['three']) > 0:
has_solution = True
display_solutions(fluctuated_solutions['three'], 3)
if has_solution:
print(f"\n使用波动系数列表,共找到有效解")
return
# 如果所有系数集都没有找到解
print("\n没有找到符合条件的解,即使使用波动后的系数列表。")
if __name__ == "__main__":
main()
print(f"\n总耗时: {time.time() - start_time:.2f}秒")
ZnJvbSBpdGVydG9vbHMgaW1wb3J0IGNvbWJpbmF0aW9ucwppbXBvcnQgdGltZQppbXBvcnQgdGhyZWFkaW5nCmZyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlZmF1bHRkaWN0CmltcG9ydCBtYXRoCmZyb20gbXVsdGlwcm9jZXNzaW5nIGltcG9ydCBQb29sCgojIOmFjee9ruWPguaVsO+8iOS8mOWMlumYiOWAvO+8iQpUQVJHRVQgPSAyNDEzMjcgICMg55uu5qCH5YC8CkJBU0VfVkFMVUVTID0gWzM2LjUsIDQxLjUsIDU5LDY4LjUsIDc0LCA5MS41XSAgIyDln7rnoYDns7vmlbDliJfooagKRkxVQ1RVQVRJT04gPSAxLjAgICMg57O75pWw5rOi5Yqo6IyD5Zu0Ck1BWF9TT0xVVElPTlMgPSAzICAjIOavj+S4que7hOWQiOeahOacgOWkp+ino+aVsOmHjwpTT0xWRVJfVElNRU9VVCA9IDE4MCAgIyDmsYLop6PotoXml7bml7bpl7Qo56eSKQpUSFJFRV9WQVJfVEhSRVNIT0xEID0gMjU5MDAwICAjIOS9v+eUqOS4ieS4quWPmOmHj+eahOmYiOWAvO+8iOiwg+aVtOS4ujI1OTAwMO+8iQpQUk9EVUNUX1JBTkdFX1RIUkVTSE9MRCA9IDEyNTAwMCAgIyDkuZjnp6/ojIPlm7TpmZDliLbpmIjlgLzvvIjosIPmlbTkuLoxMjUwMDDvvIkKSElHSF9UQVJHRVRfVEhSRVNIT0xEID0gMjU5MDAwICAjIOabtOmrmOebruagh+WAvOmYiOWAvO+8iOiwg+aVtOS4ujI1OTAwMO+8iQpTSE9XX1BST0dSRVNTID0gVHJ1ZSAgIyDmmK/lkKbmmL7npLrov5vluqYKTUFYX1NPTFVUSU9OU19QRVJfQ09NQiA9IDEwMCAgIyDmr4/kuKrnu4TlkIjnmoTmnIDlpKfop6PmlbDph4/vvIznlKjkuo7mj5DliY3nu4jmraIKVVNFX01VTFRJUFJPQ0VTU0lORyA9IFRydWUgICMg5piv5ZCm5L2/55So5aSa6L+b56iL5Yqg6YCfCgpkZWYgaXNfdmFsaWRfcHJvZHVjdChwKToKICAgICIiIuajgOafpeWNleS4quS5mOenr+aYr+WQpuWcqOacieaViOiMg+WbtOWGhSIiIgogICAgaWYgVEFSR0VUID4gUFJPRFVDVF9SQU5HRV9USFJFU0hPTEQ6ICAjIFRBUkdFVCA+IDEyNTAwMAogICAgICAgIGlmIFRBUkdFVCA+IEhJR0hfVEFSR0VUX1RIUkVTSE9MRDogICMgVEFSR0VUID4gMjU5MDAwCiAgICAgICAgICAgIHJldHVybiBwIDw9IDEyNTAwMCAgIyDljZXkuKrkuZjnp6/kuIrpmZAKICAgICAgICBlbHNlOiAgIyAxMjUwMDAgPCBUQVJHRVQgPD0gMjU5MDAwCiAgICAgICAgICAgIHJldHVybiA3NDAwMCA8PSBwIDw9IDEyNTAwMCAgIyDljZXkuKrkuZjnp6/ojIPlm7QKICAgIGVsc2U6ICAjIFRBUkdFVCA8PSAxMjUwMDAKICAgICAgICByZXR1cm4gVHJ1ZSAgIyDlsI/nm67moIflgLzlj5bmtojmiYDmnInpmZDliLYKCmRlZiBmaW5kX3NpbmdsZV92YXJpYWJsZV9zb2x1dGlvbnModmFsdWVzKToKICAgICIiIuafpeaJvuWNleS4quaVsOeahOino++8iGEqeCA9IFRBUkdFVO+8iSIiIgogICAgc29sdXRpb25zID0gW10KICAgIGZvciBhIGluIHZhbHVlczoKICAgICAgICBxdW90aWVudCA9IFRBUkdFVCAvIGEKICAgICAgICBpZiBxdW90aWVudCAhPSBpbnQocXVvdGllbnQpOgogICAgICAgICAgICBjb250aW51ZQogICAgICAgIHggPSBpbnQocXVvdGllbnQpCiAgICAgICAgaWYgMSA8PSB4IDw9IDEwMDAwIGFuZCBpc192YWxpZF9wcm9kdWN0KGEgKiB4KToKICAgICAgICAgICAgc29sdXRpb25zLmFwcGVuZCgoYSwgeCkpCiAgICAgICAgICAgIGlmIGxlbihzb2x1dGlvbnMpID49IE1BWF9TT0xVVElPTlM6CiAgICAgICAgICAgICAgICBicmVhawogICAgcmV0dXJuIHNvbHV0aW9ucwoKZGVmIGZpbmRfdHdvX3ZhcmlhYmxlX3NvbHV0aW9ucyh2YWx1ZXMpOgogICAgIiIi5LyY5YyW55qE5Y+M5Y+Y6YeP5rGC6Kej566X5rOVIiIiCiAgICBzb2x1dGlvbnMgPSBkZWZhdWx0ZGljdChsaXN0KQogICAgZm9yIGksIGEgaW4gZW51bWVyYXRlKHZhbHVlcyk6CiAgICAgICAgZm9yIGIgaW4gdmFsdWVzW2k6XToKICAgICAgICAgICAgc2Vlbl94eSA9IHNldCgpCiAgICAgICAgICAgIG1heF94ID0gbWF0aC5mbG9vcigoVEFSR0VUIC0gYikgLyBhKQogICAgICAgICAgICBtaW5feCA9IG1heCgxLCBtYXRoLmNlaWwoKFRBUkdFVCAtIGIgKiAxMDAwMCkgLyBhKSkKICAgICAgICAgICAgCiAgICAgICAgICAgIGlmIG1heF94IDwgbWluX3g6CiAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgCiAgICAgICAgICAgIHhfY291bnQgPSBtYXhfeCAtIG1pbl94ICsgMQogICAgICAgICAgICB4X3N0ZXAgPSBtYXgoMSwgeF9jb3VudCAvLyAxMDAwKQogICAgICAgICAgICAKICAgICAgICAgICAgZm9yIHggaW4gcmFuZ2UobWluX3gsIG1heF94ICsgMSwgeF9zdGVwKToKICAgICAgICAgICAgICAgIHJlbWFpbmRlciA9IFRBUkdFVCAtIGEgKiB4CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGlmIHJlbWFpbmRlciA8IGI6CiAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGlmIHJlbWFpbmRlciA+IGIgKiAxMDAwMDoKICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgaWYgcmVtYWluZGVyICUgYiA9PSAwOgogICAgICAgICAgICAgICAgICAgIHkgPSByZW1haW5kZXIgLy8gYgogICAgICAgICAgICAgICAgICAgIGlmIDEgPD0geSA8PSAxMDAwMCBhbmQgaXNfdmFsaWRfcHJvZHVjdChiICogeSk6CiAgICAgICAgICAgICAgICAgICAgICAgIHh5X3BhaXIgPSAoeCwgeSkgaWYgYSA8PSBiIGVsc2UgKHksIHgpCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIHh5X3BhaXIgbm90IGluIHNlZW5feHk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWVuX3h5LmFkZCh4eV9wYWlyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgc29sdXRpb25zWyhhLCBiKV0uYXBwZW5kKChhLCB4LCBiLCB5KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGxlbihzb2x1dGlvbnNbKGEsIGIpXSkgPj0gTUFYX1NPTFVUSU9OU19QRVJfQ09NQjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgcmV0dXJuIHNvbHV0aW9ucwoKZGVmIHByb2Nlc3NfdGhyZWVfdmFyX2NvbWJpbmF0aW9uKGFyZ3MpOgogICAgIiIi5aSE55CG5LiJ5Y+Y6YeP57uE5ZCI55qE6L6F5Yqp5Ye95pWw77yM55So5LqO5bm26KGM6K6h566XIiIiCiAgICBhLCBiLCBjLCB2YWx1ZV9yYW5nZXMsIHRhcmdldCA9IGFyZ3MKICAgIHNvbHV0aW9ucyA9IFtdCiAgICBzZWVuX3h5eiA9IHNldCgpCiAgICAKICAgIG1pbl94LCBtYXhfeCA9IHZhbHVlX3Jhbmdlc1thXQogICAgeF9jb3VudCA9IG1heF94IC0gbWluX3ggKyAxCiAgICB4X3N0ZXAgPSBtYXgoMSwgeF9jb3VudCAvLyAxMDAwKQogICAgCiAgICBmb3IgeCBpbiByYW5nZShtaW5feCwgbWF4X3ggKyAxLCB4X3N0ZXApOgogICAgICAgIGF4ID0gYSAqIHgKICAgICAgICBpZiBub3QgaXNfdmFsaWRfcHJvZHVjdChheCk6CiAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgIAogICAgICAgIHJlbWFpbmRlcjEgPSB0YXJnZXQgLSBheAogICAgICAgIGlmIHJlbWFpbmRlcjEgPCAwOgogICAgICAgICAgICBicmVhawogICAgICAgICAgICAKICAgICAgICBtYXhfeSA9IG1hdGguZmxvb3IoKHJlbWFpbmRlcjEgLSBjKSAvIGIpCiAgICAgICAgbWluX3kgPSBtYXgoMSwgbWF0aC5jZWlsKChyZW1haW5kZXIxIC0gYyAqIDEwMDAwKSAvIGIpKQogICAgICAgIAogICAgICAgIGlmIG1heF95IDwgbWluX3k6CiAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgIAogICAgICAgIHlfY291bnQgPSBtYXhfeSAtIG1pbl95ICsgMQogICAgICAgIHlfc3RlcCA9IG1heCgxLCB5X2NvdW50IC8vIDEwMCkKICAgICAgICAKICAgICAgICBmb3IgeSBpbiByYW5nZShtaW5feSwgbWF4X3kgKyAxLCB5X3N0ZXApOgogICAgICAgICAgICBieSA9IGIgKiB5CiAgICAgICAgICAgIGlmIG5vdCBpc192YWxpZF9wcm9kdWN0KGJ5KToKICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgcmVtYWluZGVyMiA9IHJlbWFpbmRlcjEgLSBieQogICAgICAgICAgICBpZiByZW1haW5kZXIyIDwgMDoKICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgaWYgcmVtYWluZGVyMiA+IGMgKiAxMDAwMDoKICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgaWYgcmVtYWluZGVyMiAlIGMgPT0gMDoKICAgICAgICAgICAgICAgIHogPSByZW1haW5kZXIyIC8vIGMKICAgICAgICAgICAgICAgIGlmIDEgPD0geiA8PSAxMDAwMCBhbmQgaXNfdmFsaWRfcHJvZHVjdChjICogeik6CiAgICAgICAgICAgICAgICAgICAgeHl6X3R1cGxlID0gdHVwbGUoc29ydGVkKFt4LCB5LCB6XSkpCiAgICAgICAgICAgICAgICAgICAgaWYgeHl6X3R1cGxlIG5vdCBpbiBzZWVuX3h5ejoKICAgICAgICAgICAgICAgICAgICAgICAgc2Vlbl94eXouYWRkKHh5el90dXBsZSkKICAgICAgICAgICAgICAgICAgICAgICAgc29sdXRpb25zLmFwcGVuZCgoYSwgeCwgYiwgeSwgYywgeikpCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGxlbihzb2x1dGlvbnMpID49IE1BWF9TT0xVVElPTlNfUEVSX0NPTUI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc29sdXRpb25zCiAgICAKICAgIHJldHVybiBzb2x1dGlvbnMKCmRlZiBmaW5kX3RocmVlX3ZhcmlhYmxlX3NvbHV0aW9ucyh2YWx1ZXMpOgogICAgIiIi5LyY5YyW55qE5LiJ5Y+Y6YeP5rGC6Kej566X5rOV77yM5L2/55So5bm26KGM6K6h566XIiIiCiAgICBzb2x1dGlvbnMgPSBkZWZhdWx0ZGljdChsaXN0KQogICAgc29ydGVkX3ZhbHVlcyA9IHNvcnRlZCh2YWx1ZXMpCiAgICAKICAgICMg6aKE6K6h566X5q+P5Liq57O75pWw55qE5pyJ5pWI6IyD5Zu0CiAgICB2YWx1ZV9yYW5nZXMgPSB7fQogICAgZm9yIGEgaW4gc29ydGVkX3ZhbHVlczoKICAgICAgICBtaW5feCA9IG1heCgxLCBtYXRoLmNlaWwoNzQwMDAgLyBhKSkKICAgICAgICBtYXhfeCA9IG1pbigxMDAwMCwgbWF0aC5mbG9vcigxMjUwMDAgLyBhKSkKICAgICAgICB2YWx1ZV9yYW5nZXNbYV0gPSAobWluX3gsIG1heF94KQogICAgCiAgICBjb21iaW5hdGlvbnNfbGlzdCA9IFtdCiAgICBmb3IgaSwgYSBpbiBlbnVtZXJhdGUoc29ydGVkX3ZhbHVlcyk6CiAgICAgICAgZm9yIGogaW4gcmFuZ2UoaSArIDEsIGxlbihzb3J0ZWRfdmFsdWVzKSk6CiAgICAgICAgICAgIGIgPSBzb3J0ZWRfdmFsdWVzW2pdCiAgICAgICAgICAgIGZvciBrIGluIHJhbmdlKGogKyAxLCBsZW4oc29ydGVkX3ZhbHVlcykpOgogICAgICAgICAgICAgICAgYyA9IHNvcnRlZF92YWx1ZXNba10KICAgICAgICAgICAgICAgIGNvbWJpbmF0aW9uc19saXN0LmFwcGVuZCgoYSwgYiwgYywgdmFsdWVfcmFuZ2VzLCBUQVJHRVQpKQogICAgCiAgICBpZiBVU0VfTVVMVElQUk9DRVNTSU5HOgogICAgICAgIHdpdGggUG9vbCgpIGFzIHBvb2w6CiAgICAgICAgICAgIHJlc3VsdHMgPSBwb29sLm1hcChwcm9jZXNzX3RocmVlX3Zhcl9jb21iaW5hdGlvbiwgY29tYmluYXRpb25zX2xpc3QpCiAgICAgICAgCiAgICAgICAgZm9yIGksIChhLCBiLCBjLCBfLCBfKSBpbiBlbnVtZXJhdGUoY29tYmluYXRpb25zX2xpc3QpOgogICAgICAgICAgICBpZiByZXN1bHRzW2ldOgogICAgICAgICAgICAgICAgc29sdXRpb25zWyhhLCBiLCBjKV0gPSByZXN1bHRzW2ldCiAgICBlbHNlOgogICAgICAgIHRvdGFsX2NvbWJpbmF0aW9ucyA9IGxlbihjb21iaW5hdGlvbnNfbGlzdCkKICAgICAgICBmb3IgaSwgKGEsIGIsIGMsIF8sIF8pIGluIGVudW1lcmF0ZShjb21iaW5hdGlvbnNfbGlzdCk6CiAgICAgICAgICAgIHJlcyA9IHByb2Nlc3NfdGhyZWVfdmFyX2NvbWJpbmF0aW9uKChhLCBiLCBjLCB2YWx1ZV9yYW5nZXMsIFRBUkdFVCkpCiAgICAgICAgICAgIGlmIHJlczoKICAgICAgICAgICAgICAgIHNvbHV0aW9uc1soYSwgYiwgYyldID0gcmVzCiAgICAgICAgICAgIAogICAgICAgICAgICBpZiBTSE9XX1BST0dSRVNTIGFuZCBpICUgMTAgPT0gMDoKICAgICAgICAgICAgICAgIHByaW50KGYiXHLkuInlj5jph4/nu4TlkIjov5vluqY6IHtpfS97dG90YWxfY29tYmluYXRpb25zfSDnu4QiLCBlbmQ9JycpCiAgICAKICAgIGlmIFNIT1dfUFJPR1JFU1MgYW5kIG5vdCBVU0VfTVVMVElQUk9DRVNTSU5HOgogICAgICAgIHByaW50KGYiXHLkuInlj5jph4/nu4TlkIjov5vluqY6IHt0b3RhbF9jb21iaW5hdGlvbnN9L3t0b3RhbF9jb21iaW5hdGlvbnN9IOe7hCAtIOWujOaIkCIpCiAgICAKICAgIHJldHVybiBzb2x1dGlvbnMKCmRlZiBmaW5kX2JhbGFuY2VkX3NvbHV0aW9ucyhzb2x1dGlvbnMsIHZhcl9jb3VudCwgbnVtPTIpOgogICAgIiIi5LuO5omA5pyJ6Kej5Lit562b6YCJ5Ye65pyA5bmz6KGh55qE6KejIiIiCiAgICBpZiB2YXJfY291bnQgPT0gMSBvciBub3Qgc29sdXRpb25zOgogICAgICAgIHJldHVybiBzb2x1dGlvbnMKICAgIAogICAgYmFsYW5jZWQgPSBbXQogICAgZm9yIHNvbCBpbiBzb2x1dGlvbnM6CiAgICAgICAgdmFycyA9IHNvbFsxOjoyXSAgIyDojrflj5bop6PkuK3nmoTlj5jph4/lgLwKICAgICAgICBkaWZmID0gbWF4KHZhcnMpIC0gbWluKHZhcnMpICAjIOiuoeeul+WPmOmHj+S5i+mXtOeahOacgOWkp+W3ruWAvAogICAgICAgIGJhbGFuY2VkLmFwcGVuZCgoZGlmZiwgc29sKSkKICAgIAogICAgIyDmjInlt67lgLzmjpLluo/vvIzov5Tlm57lt67lgLzmnIDlsI/nmoTop6MKICAgIHJldHVybiBbcyBmb3IgXywgcyBpbiBzb3J0ZWQoYmFsYW5jZWQsIGtleT1sYW1iZGEgeDogeFswXSlbOm51bV1dCgpkZWYgZmluZF9vcmlnaW5hbF9zb2x1dGlvbnMoc29sdXRpb25zLCBiYWxhbmNlZF9zb2x1dGlvbnMsIG51bT0zKToKICAgICIiIuS7juWJqeS9meino+S4reiOt+WPluWOn+Wni+mhuuW6j+eahOinoyIiIgogICAgaWYgbm90IHNvbHV0aW9uczoKICAgICAgICByZXR1cm4gW10KICAgIAogICAgcmVtYWluaW5nID0gW3MgZm9yIHMgaW4gc29sdXRpb25zIGlmIHMgbm90IGluIGJhbGFuY2VkX3NvbHV0aW9uc10KICAgIHJldHVybiByZW1haW5pbmdbOm51bV0KCmRlZiBkaXNwbGF5X3NvbHV0aW9ucyhzb2x1dGlvbnNfZGljdCwgdmFyX2NvdW50KToKICAgICIiIuS8mOWMlueahOino+aYvuekuuWHveaVsCIiIgogICAgaWYgbm90IHNvbHV0aW9uc19kaWN0OgogICAgICAgIHJldHVybgogICAgCiAgICBwcmludChmIlxu5om+5YiwIHtsZW4oc29sdXRpb25zX2RpY3QpfSDnu4R7dmFyX2NvdW50feWPmOmHj+ino++8miIpCiAgICAKICAgIGZvciBpLCAoY29lZmZzLCBwYWlyX3NvbHV0aW9ucykgaW4gZW51bWVyYXRlKHNvcnRlZChzb2x1dGlvbnNfZGljdC5pdGVtcygpKSwgMSk6CiAgICAgICAgYmFsYW5jZWQgPSBmaW5kX2JhbGFuY2VkX3NvbHV0aW9ucyhwYWlyX3NvbHV0aW9ucywgdmFyX2NvdW50KQogICAgICAgIG9yaWdpbmFsID0gZmluZF9vcmlnaW5hbF9zb2x1dGlvbnMocGFpcl9zb2x1dGlvbnMsIGJhbGFuY2VkKQogICAgICAgIGFsbF9kaXNwbGF5ID0gYmFsYW5jZWQgKyBvcmlnaW5hbAogICAgICAgIAogICAgICAgIGlmIHZhcl9jb3VudCA9PSAxOgogICAgICAgICAgICBhID0gY29lZmZzCiAgICAgICAgICAgIHByaW50KGYiXG57aX0uIOe7hOWQiDogYT17YX0gKHtsZW4ocGFpcl9zb2x1dGlvbnMpfSDkuKrmnInmlYjop6MpIikKICAgICAgICBlbGlmIHZhcl9jb3VudCA9PSAyOgogICAgICAgICAgICBhLCBiID0gY29lZmZzCiAgICAgICAgICAgIHByaW50KGYiXG57aX0uIOe7hOWQiDogYT17YX0sIGI9e2J9ICh7bGVuKHBhaXJfc29sdXRpb25zKX0g5Liq5pyJ5pWI6KejKSIpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgYSwgYiwgYyA9IGNvZWZmcwogICAgICAgICAgICBwcmludChmIlxue2l9LiDnu4TlkIg6IGE9e2F9LCBiPXtifSwgYz17Y30gKHtsZW4ocGFpcl9zb2x1dGlvbnMpfSDkuKrmnInmlYjop6MpIikKICAgICAgICAKICAgICAgICBmb3Igaiwgc29sIGluIGVudW1lcmF0ZShhbGxfZGlzcGxheSwgMSk6CiAgICAgICAgICAgIHRhZyA9ICJb5bmz6KGh6KejXSIgaWYgaiA8PSBsZW4oYmFsYW5jZWQpIGVsc2UgIlvljp/lp4vop6NdIgogICAgICAgICAgICAKICAgICAgICAgICAgaWYgdmFyX2NvdW50ID09IDE6CiAgICAgICAgICAgICAgICBhLCB4ID0gc29sCiAgICAgICAgICAgICAgICBwcmludChmIiAge2p9LiB4PXt4fSwgYSp4PXthKng6LjFmfSwg5oC75ZKMPXthKng6LjFmfSB7dGFnfSIpCiAgICAgICAgICAgIGVsaWYgdmFyX2NvdW50ID09IDI6CiAgICAgICAgICAgICAgICBhLCB4LCBiLCB5ID0gc29sCiAgICAgICAgICAgICAgICBwcmludChmIiAge2p9LiB4PXt4fSwgeT17eX0sIGEqeD17YSp4Oi4xZn0sIGIqeT17Yip5Oi4xZn0sIOaAu+WSjD17YSp4ICsgYip5Oi4xZn0ge3RhZ30iKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgYSwgeCwgYiwgeSwgYywgeiA9IHNvbAogICAgICAgICAgICAgICAgcHJpbnQoZiIgIHtqfS4geD17eH0sIHk9e3l9LCB6PXt6fSwgIgogICAgICAgICAgICAgICAgICAgICAgZiJhKng9e2EqeDouMWZ9LCBiKnk9e2IqeTouMWZ9LCBjKno9e2MqejouMWZ9LCAiCiAgICAgICAgICAgICAgICAgICAgICBmIuaAu+WSjD17YSp4ICsgYip5ICsgYyp6Oi4xZn0ge3RhZ30iKQoKZGVmIHJ1bl93aXRoX3RpbWVvdXQoZnVuYywgYXJncz0oKSwga3dhcmdzPU5vbmUsIHRpbWVvdXQ9U09MVkVSX1RJTUVPVVQpOgogICAgIiIi6L+Q6KGM5Ye95pWw5bm26K6+572u6LaF5pe26ZmQ5Yi2IiIiCiAgICBpZiBrd2FyZ3MgaXMgTm9uZToKICAgICAgICBrd2FyZ3MgPSB7fQogICAgCiAgICByZXN1bHQgPSBbXQogICAgZXJyb3IgPSBbXQogICAgCiAgICBkZWYgd3JhcHBlcigpOgogICAgICAgIHRyeToKICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChmdW5jKCphcmdzLCAqKmt3YXJncykpCiAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAgICBlcnJvci5hcHBlbmQoZSkKICAgIAogICAgdGhyZWFkID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9d3JhcHBlcikKICAgIHRocmVhZC5kYWVtb24gPSBUcnVlCiAgICB0aHJlYWQuc3RhcnQoKQogICAgdGhyZWFkLmpvaW4odGltZW91dCkKICAgIAogICAgaWYgdGhyZWFkLmlzX2FsaXZlKCk6CiAgICAgICAgcHJpbnQoZiLorablkYo6IHtmdW5jLl9fbmFtZV9ffSDotoXml7bvvIh7dGltZW91dH3np5LvvInvvIzot7Pov4fmraTmlrnms5UiKQogICAgICAgIHJldHVybiBOb25lCiAgICAKICAgIGlmIGVycm9yOgogICAgICAgIHJhaXNlIGVycm9yWzBdCiAgICAKICAgIHJldHVybiByZXN1bHRbMF0KCmRlZiBtYWluKCk6CiAgICBwcmludChmIuebruagh+WAvDoge1RBUkdFVH0iKQogICAgCiAgICAjIOeUn+aIkOazouWKqOWQjueahOezu+aVsAogICAgRkxVQ1RVQVRFRF9WQUxVRVMgPSBbcm91bmQodiAtIEZMVUNUVUFUSU9OLCAxKSBmb3IgdiBpbiBCQVNFX1ZBTFVFU10KICAgIAogICAgIyDlsJ3or5Xln7rnoYDns7vmlbAKICAgIHByaW50KGYiXG49PT09IOWwneivleWfuuehgOezu+aVsCA9PT09IikKICAgIAogICAgIyDnm67moIflgLw3NTA4NSA8IDI1OTAwMO+8jOS8muaMiemhuuW6j+WwneivleWNleOAgeWPjOOAgeS4ieWPmOmHj+inowogICAgYmFzZV9zb2x1dGlvbnMgPSB7CiAgICAgICAgJ3NpbmdsZSc6IHJ1bl93aXRoX3RpbWVvdXQoZmluZF9zaW5nbGVfdmFyaWFibGVfc29sdXRpb25zLCBhcmdzPShCQVNFX1ZBTFVFUywpKSwKICAgICAgICAndHdvJzogcnVuX3dpdGhfdGltZW91dChmaW5kX3R3b192YXJpYWJsZV9zb2x1dGlvbnMsIGFyZ3M9KEJBU0VfVkFMVUVTLCkpLAogICAgICAgICd0aHJlZSc6IFtdCiAgICB9CiAgICAKICAgIGhhc19zb2x1dGlvbiA9IEZhbHNlCiAgICAKICAgICMg5pi+56S65Y2V5Y+Y6YeP6KejCiAgICBpZiBiYXNlX3NvbHV0aW9uc1snc2luZ2xlJ106CiAgICAgICAgaGFzX3NvbHV0aW9uID0gVHJ1ZQogICAgICAgIGRpc3BsYXlfc29sdXRpb25zKHthOiBbc29sXSBmb3IgYSwgc29sIGluIHppcChCQVNFX1ZBTFVFUywgYmFzZV9zb2x1dGlvbnNbJ3NpbmdsZSddKSBpZiBzb2x9LCAxKQogICAgCiAgICAjIOaYvuekuuWPjOWPmOmHj+inowogICAgaWYgYmFzZV9zb2x1dGlvbnNbJ3R3byddIGFuZCBsZW4oYmFzZV9zb2x1dGlvbnNbJ3R3byddKSA+IDA6CiAgICAgICAgaGFzX3NvbHV0aW9uID0gVHJ1ZQogICAgICAgIGRpc3BsYXlfc29sdXRpb25zKGJhc2Vfc29sdXRpb25zWyd0d28nXSwgMikKICAgIAogICAgIyDljZXlj5jph4/lkozlj4zlj5jph4/pg73ml6Dop6Pml7bvvIzlsJ3or5XkuInlj5jph4/op6MKICAgIGlmIG5vdCBoYXNfc29sdXRpb246CiAgICAgICAgcHJpbnQoZiJcbj09PT0g5Y2V5Y+Y6YeP5ZKM5Y+M5Y+Y6YeP5peg6Kej77yM5bCd6K+V5LiJ5Y+Y6YeP6KejID09PT0iKQogICAgICAgIGJhc2Vfc29sdXRpb25zWyd0aHJlZSddID0gcnVuX3dpdGhfdGltZW91dChmaW5kX3RocmVlX3ZhcmlhYmxlX3NvbHV0aW9ucywgYXJncz0oQkFTRV9WQUxVRVMsKSkKICAgICAgICAKICAgICAgICBpZiBiYXNlX3NvbHV0aW9uc1sndGhyZWUnXSBhbmQgbGVuKGJhc2Vfc29sdXRpb25zWyd0aHJlZSddKSA+IDA6CiAgICAgICAgICAgIGhhc19zb2x1dGlvbiA9IFRydWUKICAgICAgICAgICAgZGlzcGxheV9zb2x1dGlvbnMoYmFzZV9zb2x1dGlvbnNbJ3RocmVlJ10sIDMpCiAgICAKICAgIGlmIGhhc19zb2x1dGlvbjoKICAgICAgICBwcmludChmIlxu5L2/55So5Z+656GA57O75pWw5YiX6KGo77yM5YWx5om+5Yiw5pyJ5pWI6KejIikKICAgICAgICByZXR1cm4KICAgIAogICAgIyDlpoLmnpzln7rnoYDns7vmlbDmsqHmnInmib7liLDop6PvvIzlsJ3or5Xms6Lliqjns7vmlbAKICAgIHByaW50KGYiXG49PT09IOWwneivleazouWKqOezu+aVsCA9PT09IikKICAgIAogICAgZmx1Y3R1YXRlZF9zb2x1dGlvbnMgPSB7CiAgICAgICAgJ3NpbmdsZSc6IHJ1bl93aXRoX3RpbWVvdXQoZmluZF9zaW5nbGVfdmFyaWFibGVfc29sdXRpb25zLCBhcmdzPShGTFVDVFVBVEVEX1ZBTFVFUywpKSwKICAgICAgICAndHdvJzogcnVuX3dpdGhfdGltZW91dChmaW5kX3R3b192YXJpYWJsZV9zb2x1dGlvbnMsIGFyZ3M9KEZMVUNUVUFURURfVkFMVUVTLCkpLAogICAgICAgICd0aHJlZSc6IFtdCiAgICB9CiAgICAKICAgIGhhc19zb2x1dGlvbiA9IEZhbHNlCiAgICAKICAgICMg5pi+56S65Y2V5Y+Y6YeP6KejCiAgICBpZiBmbHVjdHVhdGVkX3NvbHV0aW9uc1snc2luZ2xlJ106CiAgICAgICAgaGFzX3NvbHV0aW9uID0gVHJ1ZQogICAgICAgIGRpc3BsYXlfc29sdXRpb25zKHthOiBbc29sXSBmb3IgYSwgc29sIGluIHppcChGTFVDVFVBVEVEX1ZBTFVFUywgZmx1Y3R1YXRlZF9zb2x1dGlvbnNbJ3NpbmdsZSddKSBpZiBzb2x9LCAxKQogICAgCiAgICAjIOaYvuekuuWPjOWPmOmHj+inowogICAgaWYgZmx1Y3R1YXRlZF9zb2x1dGlvbnNbJ3R3byddIGFuZCBsZW4oZmx1Y3R1YXRlZF9zb2x1dGlvbnNbJ3R3byddKSA+IDA6CiAgICAgICAgaGFzX3NvbHV0aW9uID0gVHJ1ZQogICAgICAgIGRpc3BsYXlfc29sdXRpb25zKGZsdWN0dWF0ZWRfc29sdXRpb25zWyd0d28nXSwgMikKICAgIAogICAgIyDljZXlj5jph4/lkozlj4zlj5jph4/pg73ml6Dop6Pml7bvvIzlsJ3or5XkuInlj5jph4/op6MKICAgIGlmIG5vdCBoYXNfc29sdXRpb246CiAgICAgICAgcHJpbnQoZiJcbj09PT0g5Y2V5Y+Y6YeP5ZKM5Y+M5Y+Y6YeP5peg6Kej77yM5bCd6K+V5LiJ5Y+Y6YeP6KejID09PT0iKQogICAgICAgIGZsdWN0dWF0ZWRfc29sdXRpb25zWyd0aHJlZSddID0gcnVuX3dpdGhfdGltZW91dChmaW5kX3RocmVlX3ZhcmlhYmxlX3NvbHV0aW9ucywgYXJncz0oRkxVQ1RVQVRFRF9WQUxVRVMsKSkKICAgICAgICAKICAgICAgICBpZiBmbHVjdHVhdGVkX3NvbHV0aW9uc1sndGhyZWUnXSBhbmQgbGVuKGZsdWN0dWF0ZWRfc29sdXRpb25zWyd0aHJlZSddKSA+IDA6CiAgICAgICAgICAgIGhhc19zb2x1dGlvbiA9IFRydWUKICAgICAgICAgICAgZGlzcGxheV9zb2x1dGlvbnMoZmx1Y3R1YXRlZF9zb2x1dGlvbnNbJ3RocmVlJ10sIDMpCiAgICAKICAgIGlmIGhhc19zb2x1dGlvbjoKICAgICAgICBwcmludChmIlxu5L2/55So5rOi5Yqo57O75pWw5YiX6KGo77yM5YWx5om+5Yiw5pyJ5pWI6KejIikKICAgICAgICByZXR1cm4KICAgIAogICAgIyDlpoLmnpzmiYDmnInns7vmlbDpm4bpg73msqHmnInmib7liLDop6MKICAgIHByaW50KCJcbuayoeacieaJvuWIsOespuWQiOadoeS7tueahOino++8jOWNs+S9v+S9v+eUqOazouWKqOWQjueahOezu+aVsOWIl+ihqOOAgiIpCgppZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgc3RhcnRfdGltZSA9IHRpbWUudGltZSgpCiAgICBtYWluKCkKICAgIHByaW50KGYiXG7mgLvogJfml7Y6IHt0aW1lLnRpbWUoKSAtIHN0YXJ0X3RpbWU6LjJmfeenkiIp
目标值: 241327
==== 尝试基础系数 ====
找到 11 组2变量解:
1. 组合: a=36.5, b=41.5 (3 个有效解)
1. x=3427, y=2801.0, a*x=125085.5, b*y=116241.5, 总和=241327.0 [平衡解]
2. x=3925, y=2363.0, a*x=143262.5, b*y=98064.5, 总和=241327.0 [平衡解]
3. x=4423, y=1925.0, a*x=161439.5, b*y=79887.5, 总和=241327.0 [原始解]
2. 组合: a=36.5, b=68.5 (2 个有效解)
1. x=3517, y=1649.0, a*x=128370.5, b*y=112956.5, 总和=241327.0 [平衡解]
2. x=4339, y=1211.0, a*x=158373.5, b*y=82953.5, 总和=241327.0 [平衡解]
3. 组合: a=41.5, b=59 (2 个有效解)
1. x=2976, y=1997.0, a*x=123504.0, b*y=117823.0, 总和=241327.0 [平衡解]
2. x=3566, y=1582.0, a*x=147989.0, b*y=93338.0, 总和=241327.0 [平衡解]
4. 组合: a=41.5, b=68.5 (2 个有效解)
1. x=3326, y=1508.0, a*x=138029.0, b*y=103298.0, 总和=241327.0 [平衡解]
2. x=4011, y=1093.0, a*x=166456.5, b*y=74870.5, 总和=241327.0 [平衡解]
5. 组合: a=41.5, b=74 (2 个有效解)
1. x=3226, y=1452.0, a*x=133879.0, b*y=107448.0, 总和=241327.0 [平衡解]
2. x=3966, y=1037.0, a*x=164589.0, b*y=76738.0, 总和=241327.0 [平衡解]
6. 组合: a=41.5, b=91.5 (1 个有效解)
1. x=3661, y=977.0, a*x=151931.5, b*y=89395.5, 总和=241327.0 [平衡解]
7. 组合: a=59, b=68.5 (1 个有效解)
1. x=2437, y=1424.0, a*x=143783.0, b*y=97544.0, 总和=241327.0 [平衡解]
8. 组合: a=59, b=74 (6 个有效解)
1. x=2081, y=1602, a*x=122779.0, b*y=118548.0, 总和=241327.0 [平衡解]
2. x=2229, y=1484, a*x=131511.0, b*y=109816.0, 总和=241327.0 [平衡解]
3. x=2377, y=1366, a*x=140243.0, b*y=101084.0, 总和=241327.0 [原始解]
4. x=2525, y=1248, a*x=148975.0, b*y=92352.0, 总和=241327.0 [原始解]
5. x=2673, y=1130, a*x=157707.0, b*y=83620.0, 总和=241327.0 [原始解]
9. 组合: a=59, b=91.5 (1 个有效解)
1. x=2465, y=1048.0, a*x=145435.0, b*y=95892.0, 总和=241327.0 [平衡解]
10. 组合: a=68.5, b=74 (1 个有效解)
1. x=2110, y=1308.0, a*x=144535.0, b*y=96792.0, 总和=241327.0 [平衡解]
11. 组合: a=68.5, b=91.5 (4 个有效解)
1. x=1864, y=1242.0, a*x=127684.0, b*y=113643.0, 总和=241327.0 [平衡解]
2. x=2047, y=1105.0, a*x=140219.5, b*y=101107.5, 总和=241327.0 [平衡解]
3. x=2230, y=968.0, a*x=152755.0, b*y=88572.0, 总和=241327.0 [原始解]
4. x=2413, y=831.0, a*x=165290.5, b*y=76036.5, 总和=241327.0 [原始解]
使用基础系数列表,共找到有效解
总耗时: 0.01秒