当前位置:   article > 正文

2019\National _C_C++_C\试题 C: 平方拆分_c++将 2019 拆分为若干个两两不同的完全平方数之和,一共有多少种不同的方法?

c++将 2019 拆分为若干个两两不同的完全平方数之和,一共有多少种不同的方法?

【问题描述】
将 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)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

Answer:26287

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

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
  

闽ICP备14008679号