丢番图方程问题问询:支票金额与找零场景的方程求解
解这个丢番图方程:支票金额互换问题
咱们先把问题里的初始方程修正一下——你给的A = D + 100c明显不符合美元和美分的换算逻辑(1美元=100美分),实际应该把所有数值转成美分来计算(避免小数,完美适配丢番图方程的整数解要求):
变量与方程定义
- 设实际支票价值为
A美分,那么A = 100D + c(D是实际美元数,0≤D≤99;c是实际美分数,0≤c≤99) - 收银员误将美元和美分互换,误写的支票金额为
100c + D美分 - 商品价格是10.08美元,即1008美分
- 找零金额 = 误写金额 - 商品价格 = 7倍实际支票价值,由此得到核心方程:
(100c + D) - 1008 = 7A
方程化简
把A = 100D + c代入方程,展开并整理:
100c + D - 1008 = 7*(100D + c) 100c + D - 1008 = 700D + 7c 93c - 699D = 1008
两边除以3简化为:
31c - 233D = 336
求解丢番图方程
步骤1:验证方程有解
用扩展欧几里得算法计算gcd(31,233):
- 233 = 31×7 + 16
- 31 = 16×1 + 15
- 16 = 15×1 + 1
- 15 = 1×15 + 0
最终得gcd(31,233)=1,1能整除336,说明方程有整数解。
步骤2:推导特解
反向推导扩展欧几里得的结果:
1 = 16 - 15×1 = 16 - (31 - 16×1)×1 = 2×16 - 31 = 2×(233 - 31×7) - 31 = 2×233 - 15×31
两边乘以336,适配目标方程31c -233D=336,得到一组特解:c₀=-5040,D₀=-672。
步骤3:筛选符合实际的通解
二元一次丢番图方程的通解形式为:
c = c₀ + 233k D = D₀ + 31k
(k为整数,因gcd=1,系数取对方的原系数)
现在需要找k使得0≤D≤99且0≤c≤99:
- 由
D≥0得:-672 +31k ≥0 → k≥22 - 由
D≤99得:-672 +31k ≤99 →k≤24
逐个试k值:
- k=22:
D=-672+31×22=10,c=-5040+233×22=86→ 符合0≤D,c≤99的实际要求 - k=23/24:计算出的c值超过99,不符合美分的取值范围
结论与验证
唯一有效解是D=10,c=86,即支票实际价值为10美元86美分(10.86美元)。
验证:
- 误写的支票金额:86美元10美分(86.10美元)
- 找零:
86.10 - 10.08 = 76.02美元 - 7倍实际价值:
7×10.86 = 76.02美元 → 完全匹配,结果正确。
内容的提问来源于stack exchange,提问作者Minura
相关产品推荐
相关产品推荐

