描述
8
是小九的幸运数字,小九想知道在1~n
的数中有多少个数字含有8
。
1 <= n <= 1000000
您在真实的面试中是否遇到过这个题?
是
样例
给出 n = 20
, 返回2
。
解释:
只有8,18 含有8。
给出 n = 100
, 返回19
。
解释:
有8,18,28,38,48,58,68,78,80,81,82,83,84,85,86,87,88,89,98。
我想了很多企图投机取巧的办法,最后发现,其实暴力破译反而相对简单一点。
class Solution {
public:
/**
* @param n: count lucky numbers from 1 ~ n
* @return: the numbers of lucky number
*/
int luckyNumber(int n) {
// Write your code here
int sum=0;
for(int i=8;i<=n;i++){
int tmp=i;
while(tmp>0){
if(tmp%10==8){
sum++;
break;
}
tmp/=10;
}
}
return sum;
}
};