Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1525035
  • 博文数量: 164
  • 博客积分: 2993
  • 博客等级: 少校
  • 技术积分: 1718
  • 用 户 组: 普通用户
  • 注册时间: 2011-06-24 11:42
文章分类

全部博文(164)

文章存档

2014年(1)

2013年(36)

2012年(90)

2011年(37)

分类: Python/Ruby

2012-07-17 14:57:17


点击(此处)折叠或打开

  1. <?php


  2. /**
  3.  * 1到1亿的自然数,求所有数的拆分后的数字之和,如286 拆分成2、8、6
  4.  * 思路:递推方法求解:
  5.  * 1.0-9的和为 a1=(0+9)*10/2
  6.  * 2.0-99时:分析共有100个数,十位上有10对0-9,个位上也是10对0-9(讲个位数上填0补充),
  7.  * 此时a2=2*10*(0+9)*10/2;
  8.  * 3.0-999时:共有1000个数,百位上有1000对0-9,十位上有10对0-9,个位上也是10对0-9,
  9.  * 此时a3=3*100*(0+9)*10/2;
  10.  * 依次类推:当位数为n时,有an=n*(10的n-1次方)*(0+9)*10/2;
  11.  * 上述题目答案即为(0-99999999)时:a8=8*(10的7次方)*(0+9)*10/2,然后加1就可以了。
  12.  */
  13. //验证方法

  14. //一千万时已经很慢了,不过计算结果和上述推论一样

  15. function getTotal($n){
  16.     $sum=0;
  17.     for($i=0;$i<=$n;$i++){
  18.         $sum+=array_sum(str_split($i));
  19.     }
  20.     echo $sum;
  21. }
  22. getTotal(10000000);

  23. ?>


阅读(2536) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~