【发布时间】:2020-08-07 05:52:18
【问题描述】:
我有一个任务,我必须根据一个值达到多少“级别”来计算“获得点数”。
假设每个级别都有 5 个增量的范围。
换句话说,如果$x = 5 那意味着:
- 1 级是 1,2,3,4,5 和
- 2级是6、7、8、9、10等
输入值($a)每进入一个新关卡,即可获得 10 分($y = 10)。
如果$a 是2,则此数字属于第一个范围,因此获得10 积分。
此外,$a = 5 获得10,$a = 7 获得20,并且$a = 12 赚取 30。
我已经使用while循环编写了一些代码,但由于时间复杂性,我不想使用while循环。
$a = 11;
$x = 5;
$y = 10;
$count = 100/$x;
$i = 1;
$c = 1 ;
while($i<=$count){
$min = $c ;
$max = $c = $c + ($x -1);
if (in_array($a, range($min, $max))) {
echo "\n result= " . $i * $y;
break;
}
$c++;
$i++;
}
上述代码的输出是正确的30,但我想找到一种更有效的技术。
【问题讨论】:
标签: php algorithm time-complexity logic formula