2019\National _C_C++_C\試題 C: 平方拆分

2020-11-13 23:00:38

【問題描述】
將 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。

Alex 007 CSDN認證部落格專家 機器學習 NLP TensorFlow
我是 Alex 007,一個熱愛計算機程式設計和硬體設計的小白。
為啥是007呢?因為叫 Alex 的人太多了,再加上每天007的生活,Alex 007就誕生了。
如果你喜歡我的文章的話,給個三連吧!