定义一个函数f(n),n是一个正整数,要求0-n之间所有整数中出现数字“1”的个数的和与n相等,例如f(13)=6 。已知f(1)=1,求下一个n的值是多少。
举例:13以内数字1、10、11、12、13包含数字“1”,且其个数为6
/***************************************************************************/
#include "stdio.h"
#include "stdlib.h"
void main()
{
int static count=0;
long int i;
char buffer[20];
for(i = 2; ;i++)
{
//C++模板函数,用于把一个整形数转换为字符串类型;
_itoa( i, buffer, 10 );
for(int j = 0;j < 20;j++)
{
if(buffer[j] == '1')
count++;
}
if(i == count + 1)//注意得加上1;因为i从2开始的
{
printf("%d有%d个'1'",i,(count + 1));
printf("/n");
break;
}
}
printf("None");
}
/*****************************************************************/
希望大家给点评,若有好的算法,请指教。谢谢。