- 博客(0)
- 资源 (2)
空空如也
统计1到n之间所有含1的数字个数,并找出n以内最大的那个f(m)=m的值
统计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的个数;
累加计数器;
}
完全一致
2012-08-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人