2652
给你一个正整数 n
,请你计算在 [1,n]
范围内能被 3
、5
、7
整除的所有整数之和。
返回一个整数,用于表示给定范围内所有满足约束条件的数字之和。
示例 1:
[1, 7]
5、
7 整除的所有整数分别是
3、5、6、7
21
示例 2:
[1, 10]
5、
7 整除的所有整数分别是
3、5、6、7、9、10
40
class Solution(object): def sumOfMultiples(self, n): """ :type n: int :rtype: int """ num_three = n//3 num_five = n//5 num_seven = n//7 num_15 = n//15 num_21 = n//21 num_35 = n//35 num_105 = n//105 return 3*num_three+num_three*(num_three-1)*3/2+5*num_five+num_five*(num_five-1)*5/2+7*num_seven+num_seven*(num_seven-1)*7/2+105*num_105+num_105*(num_105-1)*105/2-15*num_15-num_15*(num_15-1)*15/2-21*num_21-num_21*(num_21-1)*21/2-35*num_35-num_35*(num_35-1)*35/2
经过:最开始没想用暴力解法 感觉能用数学知识做 但是我的思路里面没有考虑到15这种既是3又是5的倍数的数 所以会计算两次
class Solution(object): def sumOfMultiples(self, n): """ :type n: int :rtype: int """ num_three = n//3 num_five = n//5 num_seven = n//7 return 3*num_three+num_three*(num_three-1)*3/2+5*num_five+num_five*(num_five-1)*5/2+7*num_seven+num_seven*(num_seven-1)*7/2
尝试两次WA后 感觉不知道怎么解决
遂尝试暴力
顺利解决
class Solution(object): def sumOfMultiples(self, n): """ :type n: int :rtype: int """ ans = 0 for i in range(1,n+1): if(i%3 == 0 or i%5==0 or i%7 ==0): ans = ans + i return ans
过了 但是感觉不能靠暴力解决 且最近也是想学一学算法
遂看题解 新学一知识叫做容斥原理
于是再尝试 第一次因为+ - 错误
第二次通过 但是看起来实在冗长 确实不如题解中那样再写一个函数简洁
Work Hard
But do not forget to enjoy life😀
本文来自博客园,作者:YuhangLiuCE,转载请注明原文链接:https://www.cnblogs.com/YuhangLiuCE/p/17769294.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)