1. 首页
  2. 编程语言
  3. C++ 
  4. 统计1到n之间所有含1的数字个数,并找出n以内最大的那个f(m)=m的值

统计1到n之间所有含1的数字个数,并找出n以内最大的那个f(m)=m的值

上传者: 2019-05-28 07:11:42上传 CPP文件 1.28KB 热度 38次
统计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的个数;累加计数器;}完全一致
下载地址
用户评论
码姐姐匿名网友 2019-05-28 07:11:42

挺好的一个程序

码姐姐匿名网友 2019-05-28 07:11:42

不错,讲的很不好