求0-26整数拆分为9、3、1计数的精简Python实现方案
精简实现方案
这个问题本质是求目标整数对9、3、1的贪心拆解(因为9、3、1为倍数关系,贪心算法可以直接得到系数和最小的解,完全匹配你给出的示例逻辑),仅需要三次整除+取余操作即可完成,不需要循环和多余的列表存储。
实现代码
def one_3_9(num): # 参数合法性校验 if not 0 <= num <= 26: print("Number Should be more than 0 and less than 26.") return a = num // 9 remainder = num % 9 b = remainder // 3 c = remainder % 3 print("nines: ", [a]) print("threes: ", [b]) print("Ones : ", [c]) # 若需要返回结果可补充 return a, b, c
逻辑说明
- 第一步用目标数除以9取整,直接得到9的个数
a,除以9的余数就是剩下需要用3和1凑的数值 - 第二步用余数除以3取整,得到3的个数
b,再次取余的结果就是1的个数c - 整个过程时间复杂度为O(1),无多余循环和变量开销,逻辑清晰易维护
测试验证
调用one_3_9(25)时:
- 25//9 = 2(a=2),余数为25%9=7
- 7//3=2(b=2),余数为7%3=1(c=1)
输出结果和你给出的示例完全一致。
内容的提问来源于stack exchange,提问作者K_menon
相关产品推荐
相关产品推荐

