26. Google面试题:从1到n的整数中一出现的次数
26. Google面试题:从1到n的整数中1出现的次数
题目:输入一个正整数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