题目
1 给定一个十进制的正整数,写下从1开始,到N的所有整数,然后数一下其中出现“1”的个数。
2 要求:
(1) 写一个函数 f(N) ,返回1 到 N 之间出现的“1”的个数。例如 f(12) = 5。
(2)在32位整数范围内,满足条件的“f(N) =N”的最大的N是多少。
设计思想
(1)一位数时
f(0)=0;f(1)=1;f(2-9)=1;
(2)二位数时
f(10)=1+(0+1)=2;
f(11)=(1+1)+(1+1)=4;
f(12)=(1+1)+(2+1)=5;
f(13)=(1+1)+(3+1)=6;
f(23)=(2+1)+10=13;