求0~n间1的个数
#include <iostream>using namespace std;int getOne(int);//求1~n之间出现1的个数,如f(1) = 1; f(13) = 6(1,10,11,12,13);,问f(n)=n中,n=? //采用缓存机制提高效率,如计算101,f(101) = f(100) + 101有多少个1int main(){ int n = 2; int sum = 1; while((sum + getOne(n)) != n){ sum += getOne(n); n ++; } cout << n; system("pause"); return 0;} //itoa( int value, char *string, int radix ); //第一个参数:你要转化的int; //第二个参数:转化后的char*; //第三个参数:你要转化的进制; int getOne(int n){ //求n中有多少个1 int count = 0; char c[20]; itoa(n, c, 10); for(int i = 0; i < strlen(c); i ++){ if(c[i] == '1'){ count ++; } } return count;}?