2015-10-18 90 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; 
}