1、题目
输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数。例如输入12,从1到12这些整数中包含1的数字的有1,10,11和12,1一共出现了5次。
2、思路一、不考虑时间效率的解法
直接累加1到n中每个整数1出现的次数。每次通过对10求余数判断整数的个位数字是不是1,如果数字大于10,除以10之后再判断个位数字是不是1.
参考代码:
int NumberOf1(unsigned int n)
{
int sum = 0;
for(unsigned int i = 1; i <= n; ++i)
{
int m = i;
while(m)
{
if( m%10 == 1)
sum++;
m = m/10;
}
}
return sum;
}
上述解题我们