如何基于总成本T和数量A计算美观化的客户总价C与单价S?
计算符合要求的客户总价C与单件单价S的公式
问题定义
已知总成本T、商品数量A,需计算满足以下条件的客户总价C和单件单价S:
C保留1位小数(即C为0.1的整数倍)S保留2位小数(即S为0.01的整数倍)- 严格满足
C = A × S C不低于总成本T(保证覆盖成本,同时匹配示例中“调整为美观数值”的逻辑)
推导公式
步骤1:计算最大公约数
先计算商品数量A与10的最大公约数,记为d:
d = gcd(A, 10)
(gcd为最大公约数函数,例如gcd(6,10)=2,gcd(9,10)=1)
步骤2:计算最小整数t
计算满足条件的最小正整数t,使用向上取整函数ceil()(取大于等于目标值的最小整数):
t = ceil( (10 × T × d) / A )
步骤3:计算单件单价S
S = t / (10 × d)
该结果自动保留2位小数,符合要求。
步骤4:计算客户总价C
C = (A × t) / (10 × d)
该结果自动保留1位小数,符合要求,且满足C = A × S。
示例验证
以题目中给出的示例T=11、A=6为例:
d = gcd(6,10) = 2t = ceil( (10×11×2)/6 ) = ceil(220/6) = ceil(36.666...) = 37S = 37/(10×2) = 37/20 = 1.85C = (6×37)/(10×2) = 222/20 = 11.1
结果完全匹配题目示例中的最终取值。
其他验证案例
案例1:
T=11、A=9d = gcd(9,10)=1t = ceil( (10×11×1)/9 )=ceil(110/9)=13S=13/(10×1)=1.30C=(9×13)/(10×1)=11.7
满足所有条件:11.7=9×1.30,C保留1位小数,S保留2位小数,且11.7≥11。
案例2:
T=11、A=5d = gcd(5,10)=5t=ceil( (10×11×5)/5 )=ceil(110)=110S=110/(10×5)=2.20C=(5×110)/(10×5)=11.0
刚好覆盖成本,同时满足所有格式要求。
内容的提问来源于stack exchange,提问作者Martin Fischer
相关产品推荐
相关产品推荐

