本文最后更新于 242 天前,如有失效请评论区留言。
容斥定理有三种方法:回溯,二进制枚举和库函数combinations,我比较喜欢用combinations,因为比较快,注意每comb多一位就多乘一个-1,因为容斥定理是正负交替的
https://leetcode.cn/problems/sum-multiples/description/
class Solution:
def sumOfMultiples(self, n: int) -> int:
def sum_divisible_by(x):
m = n // x
return x * m * (m + 1) // 2
ans = 0
for i in range(1, 4):
for comb in combinations([3, 5, 7], i):
ans += sum_divisible_by(lcm(*comb)) * (-1)**(i + 1)
return ans
二进制枚举可见灵神