2 回答

TA貢獻1842條經驗 獲得超21個贊
似乎您想y對每個范圍的x數字進行添加,直到a從 開始1。如果這個假設是正確的,您可以除以a得到x偏移量(將發生的范圍數)并將其乘以y。如果 的除法a / x有小數,則在乘以 之前將商(如偏移量)增加 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
所以,這樣的話,時間復雜度就是O(1)
。

TA貢獻1780條經驗 獲得超1個贊
我只是簡單地用它ceil($a / $x) * $y
來計算總數。用簡單的英語來說,將數字除以每個級別的分數,然后將該值向上舍入到下一個整數,然后將該值乘以每個級別的分數。
我假設負輸入要么是不可能的,要么應該產生負結果。我還假設零輸入應該有零輸出。
代碼:(演示)
$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
添加回答
舉報