//哪位能给代码详细注释下,多谢。
#include <iostream>
#include <stdio.h>
#include <windows.h>
#include <stdlib.h>
using namespace std;
int f(int n);//统计在从1到n的正整数中1出现的次数,比如f(13)等于1,到13这些数字中,1总共出现的次数6(1、10、11、12、13共6个1)
int count1(int n);//统计一个数字n包含1的个数,比如count1(123)返回1,count1 (112)返回2.
int cal(unsigned int number,int nwei,int count1,unsigned int ncount);//主要是这个函数看不懂,求解释。
int gTable[10];
const unsigned int gMAX = 400000000L;
int main(int argc, char * argv[])
{
int i ;
unsigned int n = 1;
unsigned int ncount = 0;
int nwei = 0;
int ncount1;
n = atoi(argv[1]);
ncount = f(n);
printf("f(%d) = %d\n",n,ncount);
for(i = 0;i<10;++i)
{
n*=10;
gTable[i] = f(n-1);
}
n=0;
nwei = 0;
ncount1 = 0;
while(n<gMAX)
{
unsigned int temp;
temp = 1;
ncount = cal(n,nwei,ncount1,ncount);
for(i = 0;i<nwei;++i)
temp *= 10;
n+=temp;
if((n/temp)/10 == 1)
++nwei;
ncount1 = count1(n);
}
return 0;
}
int cal(unsigned int number, int nwei,int count1,unsigned int ncount)函数参见http://zhidao.baidu.com/question/454564983160571725.html?quesup2&oldq=1
int cal(unsigned int number,int nwei,int count1,unsigned int ncount);//主要是这个函数看不懂,求解释
追答我也看不懂,我这个是用C语言写的!输出f(n)=n的n,这个在j+=f(i)下面价格判断if(j==n)printf("%d\n",i);