You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python求解未知整数k:CodeWars数字幂和匹配问题求助

解决方案

我们可以把问题拆解为三个核心步骤:提取数字的各位、计算连续幂次的总和、判断总和是否能被原数整除。以下是具体实现思路和代码:

代码实现

def dig_pow(n, p):
    # 将正整数n转为字符串,方便逐个提取各位数字
    digits = str(n)
    total = 0
    # 遍历每个数字,计算对应幂次并累加
    for index, digit_char in enumerate(digits):
        digit = int(digit_char)
        # 第一个数字幂次为p,后续依次加1,用p + index实现偏移
        total += digit ** (p + index)
    # 判断总和是否能被n整除,返回对应结果
    return total // n if total % n == 0 else -1

代码解释

  • 提取各位数字:把n转为字符串后,可直接遍历每个字符,再转回整数得到单独的各位数字。
  • 计算幂次和:用enumerate遍历字符串时,index从0开始,刚好对应每个数字需要增加的幂次偏移量——第一个数字用p+0,第二个用p+1,以此类推,完成连续幂次的计算并累加。
  • 判断返回结果:如果幂次总和能被n整除,返回商(即题目要求的k);否则返回-1。

示例验证

  • 输入dig_pow(89, 1):计算8^1 + 9^2 = 8 + 81 = 89,89 % 89 = 0,返回89 // 89 = 1,符合要求。
  • 输入dig_pow(695, 2):计算6^2 + 9^3 + 5^4 = 36 + 729 + 625 = 1390,1390 % 695 = 0,返回1390 // 695 = 2,符合要求。
  • 输入dig_pow(46288, 3):计算总和为2360688,2360688 // 46288 = 51,符合要求。

内容的提问来源于stack exchange,提问作者Jamiu Amure

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 11:33:01