文件名称:统计1到n之间所有含1的数字个数,并找出n以内最大的那个f(m)=m的值
文件大小:1KB
文件格式:CPP
更新时间:2015-09-01 05:24:30
数字统计问题
统计1到n之间所有含1的数字个数f(n),并找出n以内最大的那个f(m)=m的值,f(n)的时间复杂度为O(logn),找最大的那个f(m)=m的值的时间复杂度为O(n)。 思路和一位叫深海蓝天的哥们一样,不过那哥们提供的程序当n=2500000000时,f(n)计算的结果有错。网上很多程序都没考虑到n接近unsigned long能表达的最大值时,计算f(n)会发生溢出,所给的程序考虑了这点,计算结果与最直接的解法: for(n:N) { 判断n包含1的个数; 累加计数器; } 完全一致