概述
题目:输入一个整数n,求1-n这n个整数的十进制表示中1出现的次数。例如,输入12,1-12这些整数中包含1的数字有1、10、11和12,一共出现了5次。
接下来我们用C++进行编程,时间复杂度是O(logn):
int NumberOf1Between1AndN(int n)
{
if(n <= 0)
return 0;
char strN[50]
//功能与printf大致相同,只是把结果输出到指定字符串中
sprintf(strN, "%d", n);
return NumberOf1(strN);
}
int NumberOf1(const char* strN)
{
if(!strN || *strN < '0' || *strN > '9' || *strN == '