首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

求零~n间1的个数

2012-09-10 
求0~n间1的个数#include iostreamusing namespace stdint getOne(int)//求1~n之间出现1的个数,如f(1)

求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;}

?

热点排行