当前位置:编程学习 > php >>

一个PHP程序的算法问题

 小明的公司推出注册网站赢ipad活动,凡是注册的用户,如果注册的id中含有数字1那么就可以获得ipad,规则是id里面含有几个1,就可以获得几部ipad。比如一个用户的注册id是1,那么他可以获得1部ipad,如果是11,那么他就可以获得2部ipad,如果是68111,那就可以获得3部ipad。结果最后有1亿个用户注册(即id最后为100000000)
老板:“这回要破产了……”
小明:“奖品太吸引人了,不过我们的网站现在也是很牛的啦!”
老板:“别废话,快些帮我算算要付出多少台ipad!”
小明:“……好吧,我写个程序算算。”

任务简介:
编写一个函数,可以算出最后要付出多少台ipad

 

追问:这个我需要在5秒内算出来!我要的是算法!
答案:<?php
$a=0;
for($i=0;$i<100000000;$i++){

if(substr_count($i,1)){
$b+=substr_count($i,1);
}
}
echo $b;
exit;

?>

我电脑比较弱,算不错来结果,但是100测试过了

unsigned long n = 100000000;
int count = 0; /*出现1的个数*/
while(n--) {
for(a = n; a; count++)
a &= (a-1);
}

上一个:php中怎么获取给定时间中的日期部分
下一个:php取url后的文件名

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,