算算数字“1”显示多少次作者:luke

<?php
//轿车的里程表可以显示 000000 到 999999 的任意六位数组合。里程表跑完整个显示区域,此间有多少个包含一个数字“1” 的里程数? 整个过程,数字“1” 显示多少次? (如,101111 显示了5次数字“1” ,下一个里程数101112又显示了4次)

for($i=0;$i<=9;$i++){
	echo $i, ' exists ', showTimes(3, $i);
	echo PHP_EOL;
}

function showTimes($num, $char){
	$times = 0;
	$i = 0;
	do{
		$ipad = str_pad($i,$num,'0', STR_PAD_LEFT);
		// echo $ipad,' ',substr_count($ipad, $char),PHP_EOL;
		$times += substr_count($ipad, $char);
	}while(strlen(++$i)<=$num);
	return $times;
}

//	换一种思路,6个数字有6个位置,每个位置出现[1-9]的可能性都存在,并且每个数字出现的次数都是一样的。
//	如一个长度为3的0-9的序列串,某一位出现1次,则另外两位则共出现10*10次,所以就是3*10*10
function showTimes2($num, $char){
	return $num*10*10;
}

时间:2018-3-26 分类:练习