题目:
给你一个正整数 num ,请你统计并返回 小于或等于 num 且各位数字之和为 偶数 的正整数的数目。
正整数的 各位数字之和 是其所有位上的对应数字相加的结果。
示例 1:
输入:num = 4 输出:2 解释: 只有 2 和 4 满足小于等于 4 且各位数字之和为偶数。
示例 2:
输入:num = 30 输出:14 解释: 只有 14 个整数满足小于等于 30 且各位数字之和为偶数,分别是: 2、4、6、8、11、13、15、17、19、20、22、24、26 和 28 。
提示:1 <= num <= 1000
解题思路:
- 写个函数用于计算一个数字各个数位上数的和,遍历n,判断计数器++即可,或者直接不用函数,直接遍历,对每个数字操作一下一样。
- 看题解另一个解法是关于数学推导,有规律的,还有一哥们直接打表,强的一批,哈哈哈哈哈
代码:
class Solution:
def countEven(self, num: int) -> int:
ans = 0
for x in range(1, num + 1):
s = 0
while x:
s += x % 10
x //= 10
ans += s % 2 == 0
return ans