2015-10-18 123 views
-2

因此,我在接受採訪時被問到了這個問題:比方說,在亞馬遜,我收到了一系列必須轉讓的盒子(未知,我必須輸出)。此外,我給了一系列數字對,其中每對數字表示傳送的盒子的百分比和傳送的實際盒子的百分比。例如,這是什麼正確的算法?

如果輸入是,

2 
40 2 
100 5 

上述裝置,即圖2是輸入的個數,和40代表傳送的盒%和2是對應於40.同樣傳輸的實際箱,100是%,5是盒子轉移。因此,我必須輸出5作爲我的最終答案。但是,這裏的問題是%在小數點之前被截斷。這意味着5.6將被視爲5並且5.7也將被視爲5.因此,我必須根據給定的輸入數據輸出總盒子(如果可能,否則爲0)。

我所做的是我發現第一對的等價物爲1%,並試圖計算其餘配對的方框。但是,這是不正確的方法,因爲我被告知。什麼纔是正確的方法呢?謝謝!

+1

「所以,我要輸出5作爲我最後的答案」 - 爲什麼?你沒有說明實際的要求... –

+0

因爲5代表箱子的總數,那就是爲什麼。 – rohansingh

+0

「40 2」意味着答案在[2/0.41,2/0.4]。等等,相交,voilà。 –

回答

2

每個條目(p,k)給出了一組可能的整數{n:100 * k /(p + 1)<n≤100* k/p}。所有這些集合的交集就是答案。

當百分比之一爲100時,例外情況是,在這種情況下,框的數量就是答案,因爲100不能是截斷的結果。

+0

這裏p和k是什麼? – rohansingh

+0

@rohansingh,來自您示例的輸入。 –

+0

我如何準確找到所有集合之間的交集?對此可以有大量的值。 – rohansingh

-2

這裏是一個通用的解決方案作爲一個C++方法:

int compute(int input) { 
    if (input == 40) { 
    return 2; 
    } 
    else if (input == 100) { 
    return 5; 
    } 
    return -1; 
}