题目:
输入一个整数n,求从1 到n 这n 个整数的十进制表示中1 出现的次数。
例如输入12,从1 到12 这些整数中包含1 的数字有1,10,11 和12,1 一共出现了5 次。
注:这是一道广为流传的google 面试题。
思路一:
我们每次判断整数的个位数字是不是1。如果这个数字大于10,除以10 之后再判断个位数字是不是1。(对每一个数x,x先与10取余,然后判断x/10之后,是否为0,不为0则继续上述操作 复杂度为o(n) )
代码如下:
/*--------------------------------
Copyright by yuucyf. 2011.08.18
----------------------------------*/
#include "stdafx.h"
#include <iostream>
using namespace std;
int ItemContain1Count(int nValue)
{
int nNum = 0;
while (nValue)
{
if ((nValue % 10) == 0x1)
{
nNum++;
}
nValue /= 10;
}
return nNum;
}
int Sum(int n)
{
if (n <=