26. Google面试题:从1到n的整数中1出现的次数

来源:互联网 发布:广告设计软件有哪些 编辑:程序博客网 时间:2024/05/18 19:22

题目:输入一个正整数n,求从1到n这n个整数的十进制表示1出现的次数。

例如:

例如输入12, 那么从1到12的整数中出现1的整数为:1,10, 11和12,1一共出现5次。


分析:

这题可以简单计算每个数中包含的1的个数,再遍历1-n个整数。


实现如下:

#include<iostream>using namespace std;int count_num(int v){        int i = v;        int num = 0;        while(i > 0)        {                if(i%10 == 1)                        num ++;                i = i/10;        }         return num;}int counts(int n){        int i = 0;        int num = 0;        while( i <= n)        {                num += count_num(i++);        }        return num;}int main(){        cout << "1, 2, ... , 12 has 1 nums: " << counts(12) << endl;        return 0;}

输出结果为:

1, 2, ... , 12 has 1 nums: 5

0 0