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