当前位置: 首页>编程语言>正文

2019National _C_C++_C试题 C: 平方拆分

【问题描述】
将 2019 拆分为若干个两两不同的完全平方数之和,一共有多少种不同的方法?

注意交换顺序视为同一种方法,例如 132 + 252 + 352 = 2019 与 132 + 352 + 252 = 2019 视为同一种方法。

【答案提交】

这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

DFS

直接打暴力有点慢,Python大概跑了两三分钟,但无所谓,填空题嘛,能暴力出来就懒得动脑子了。

Python

def dfs(num, minn, maxn):
    if num < 0:
        return
    if num == 0:
        global ans
        ans += 1
        return
    for i in range(minn, maxn + 1):
        dfs(num - i ** 2, i + 1, maxn)

ans = 0
dfs(num=2019, minn=1, maxn=45)
print(ans)

Answer:26287

如果完全平方数包括0的话,结果需要乘2,也就是52574。


https://www.xamrdz.com/lan/5a61987298.html

相关文章: