第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

給定輸入整數(shù)、級別大小和每個級別的點數(shù),計算獲取的點數(shù)

給定輸入整數(shù)、級別大小和每個級別的點數(shù),計算獲取的點數(shù)

PHP
largeQ 2023-09-22 14:34:41
我有一項任務(wù),必須根據(jù)值達(dá)到的“級別”數(shù)量來計算“賺取的積分”數(shù)量。假設(shè)每個級別的增量范圍為 5。換句話說,如果$x = 5這意味著:1 級為 1、2、3、4、5,2 級為 6、7、8、9、10 等每次輸入值 ( $a) 進(jìn)入一個新級別,$y = 10都會獲得 10 分 ( )。如果$a是2,則該數(shù)字屬于第一個范圍,因此可以獲得10積分。而且,$a = 5賺了10,$a = 7賺了20,還$a = 12賺了30。我已經(jīng)使用 while 循環(huán)編寫了一些代碼,但由于時間復(fù)雜性,我不想使用 while 循環(huán)。$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,但我想找到一種更有效的技術(shù)。
查看完整描述

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)



查看完整回答
反對 回復(fù) 2023-09-22
?
慕神8447489

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


查看完整回答
反對 回復(fù) 2023-09-22
  • 2 回答
  • 0 關(guān)注
  • 144 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號