2 回答

TA貢獻(xiàn)1842條經(jīng)驗 獲得超22個贊
似乎您想y對每個范圍的x數(shù)字進(jìn)行添加,直到a從 開始1。如果這個假設(shè)是正確的,您可以除以a得到x偏移量(將發(fā)生的范圍數(shù))并將其乘以y。如果 的除法a / x有小數(shù),則在乘以 之前將商(如偏移量)增加 1 y。
片段:
<?php
$tests = [
2,
5,
7,
11,
12
];
$x = 5;
$y = 10;
foreach($tests as $a){
$quo = intval($a / $x);
if($quo * $x < $a) $quo++;
echo $a," => " ,$quo * $y,PHP_EOL;
}
演示: https: //3v4l.org/rDe3Z
所以,這樣的話,時間復(fù)雜度就是O(1)
。

TA貢獻(xiàn)1780條經(jīng)驗 獲得超1個贊
我只是簡單地用它ceil($a / $x) * $y
來計算總數(shù)。用簡單的英語來說,將數(shù)字除以每個級別的分?jǐn)?shù),然后將該值向上舍入到下一個整數(shù),然后將該值乘以每個級別的分?jǐn)?shù)。
我假設(shè)負(fù)輸入要么是不可能的,要么應(yīng)該產(chǎn)生負(fù)結(jié)果。我還假設(shè)零輸入應(yīng)該有零輸出。
代碼:(演示)
$as = [0, 1, 2, 5, 7, 10, 16, 49];
$x = 5;
$y = 10;
foreach ($as as $a) {
echo "$a => " . (ceil($a / $x) * $y) . "\n";
}
輸出:
0 => 0
1 => 10
2 => 10
5 => 10
7 => 20
10 => 20
16 => 40
49 => 100
- 2 回答
- 0 關(guān)注
- 144 瀏覽
添加回答
舉報