📅  最后修改于: 2023-12-03 14:57:48.213000             🧑  作者: Mango
你需要实现一个函数,输入一个正整数 n
,返回数值范围在 [1,n]
之间且不含数字 7
的所有整数的和。
def sum_without_sevens(n: int) -> int:
pass
n
:一个正整数,1 <= n <= 10^6
7
的范围在 [1,n]
的整数的和,答案返回需要 mod 1000000007
。assert sum_without_sevens(10) == 43
assert sum_without_sevens(20) == 109
assert sum_without_sevens(100) == 4620
本题考察的是简单的数学题,可以考虑将数字范围内所有符合要求的数字相加即可。
整体思路是遍历所有 [1, n]
范围内的每个正整数,对每个数字判断其中是否包含数字 7
,如果包含则跳过,否则将其加到总计数器中,并对其取模。为了不断判断数字中是否有数字 7
,我们可以将数字转换为字符串,然后在字符串中查找 7
。
def sum_without_sevens(n: int) -> int:
MOD = 1000000007
ans = 0
for i in range(1, n+1):
if '7' in str(i):
continue
ans += i
ans %= MOD
return ans
在实现过程中需要注意答案需要取模,否则会出现溢出问题。