首页 > php教程 > PHP源码 > 正文

统计0到1亿中1出现的个数

PHP中文网
发布: 2016-05-25 17:12:20
原创
1213 人浏览过

跳至

function count_n($limit, $n) {
  if ($limit < $n) {
    return 0;
  }

  if ($limit == $n) {
    return 1;
  }

  $power = floor(log10($limit));
  $unit = pow(10, $power);
  $high = floor($limit / $unit);
  $low = $limit % $unit;

  return $high * $power * $unit / 10
      + (($high > $n)? $unit: (($high == $n)? 1 + $low: 0))
      + count_n($low, $n);
}

echo count_n(100000000, 1); // 80000001
登录后复制

2. [代码]最初用 newLisp 写的函数

(define (count-n limit n)
  (if (< limit n) 0
    (= limit n) 1
    (letn (high (int ((string limit) 0))
           low (int (1 (string limit)))
           power (int (log limit 10)))
      (+ (count-n low n)
         (* high power (pow 10 (- power 1)))
         (if (> high n) (pow 10 power)
           (= high n) (+ 1 low)
           0)))))

(println (count-n 100000000 1))
登录后复制

           

       

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
热门推荐
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!