给你一个正整数 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
public class Solution {
public int CountEven(int num) {
int res = 0;
while(num > 0){
res += NH(num);
num--;
}
return res;
}
public int NH(int n){
int sss = 0;
while(n != 0){
sss += n%10;
n /= 10;
}
return sss%2==0?1:0;
}
}
- 暴力求解啊,,不咋行,换种思路
-
public class Solution { public int CountEven(int num) { int res = 0; int ng = num / 10; int g = num %10; int j = g/2 + g%2,o = g/2; res = ng * 5 - 1; res += NG(ng)?o+1:j; return res; } public bool NG(int num){ int res = 0; while(num != 0){ res += num %10; num /= 10; } return res % 2 == 0; } }
20ms 嘿嘿嘿