本文主要是介绍python之顺序取数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
取三个不相同的数,要求和为2024,一共有多少种情况
三个不一样的数,一定有大有小,所以可以直接暴力搜索,三个for循环分别搜索三个数,三个数大小为i<j<k
ans = 0
for i in range(1, 2024):for j in range(i + 1, 2024):for k in range(j + 1, 2024):if i+j+k == 2024:ans = ans + 1print(ans)#340370
确定了两个数并且和为2024就能确定第三个数为2024-i-j,可以减少一个for循环遍历,但是需要保证2024-i-j是最大的,不然会有重复的情况
ans = 0
for i in range(1, 2024):for j in range(i + 1, 2024):if (2024 - i - j) > j:ans = ans + 1print(ans) # 340370
还可以进行剪枝,2024/3=674.6,最小的数一定小于平均数,所以i的范围可以缩小到1到674,第二小的数最大的时候是当最小的数取1时,剩下两个数和为2023,2023/ 2=1011.5,所以第二小的数范围可以缩小到i到1011
ans = 0
for i in range(1, 675):for j in range(i + 1, 1012):if (2024 - i - j) > j:ans = ans + 1print(ans) # 340370
这篇关于python之顺序取数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!