求职遇到一个问题

2020-05-20 15:11:53 +08:00
 fallinlovewith

Boss 直聘上沟通,对方回复

    您好,可能受疫情影响,此岗位求职的人实在太多了,很难挨个面试。本着公平的原则,请允许我先出一个题,能答上的再继续沟通,可以吗?题目如下:
   1 块钱可以买 3 个桃子吃,吃完后 3 个桃核可以换 1 个桃子,请问 135142857 元可以最多吃到多少个桃子。

起初用笔算了下以为 4*n,回复不对,然后 IDEA 敲下,如:

public int solution(int money) {
        // money 必须>0
        // money 不能超过 Integer.MAX_VALUE
        int sum = 0;
        // 买桃子数
        int peaches = money * 3;
        
        // 核数
        int peachCore = peaches;
        int exchange = 0;
        // 核处理
        while (peachCore / 3 >= 1) { // 说明换到了至少 1 个桃子
            // 换桃子
            int changPeaches = peachCore / 3;
            exchange += changPeaches;
            peachCore = changPeaches;
        }
        
        sum = peaches + exchange;
        
        return sum;
    }

带入结果是: 135142857 元可以吃到608142849个 bitch

再问对方,回复说: 差一点点

我: 对不起,打扰了

我想问下各位 V 友是这样算吗?(不想百度,算不出来,感觉不合适这行业)

不对的话,明天我就去送外卖去了....... :dog:

3455 次点击
所在节点    求职
27 条回复
cnmllll
2020-05-20 16:59:21 +08:00
# -*- coding: UTF-8 -*-
money = 135142857

#初始换到的桃子个数
peaches = 3 * money

#初始核桃的总个数
hetao = peaches

while hetao >= 3:
#核桃能换到的桃子个数
tmp = hetao // 3
#每次剩余的核桃个数
res = hetao % 3
#换到的桃子个数+剩余的桃子个数,下次兑换
hetao = tmp + res
#桃子总个数累积
peaches += tmp

print(peaches)
bluefalconjun
2020-05-20 17:02:22 +08:00
@goat 这个思路最好...
cnmllll
2020-05-20 17:07:02 +08:00
Marstin
2020-05-20 17:09:18 +08:00
608 142 856
这不是小时候做的奥赛题嘛(135142857-1)/2*9+4
everydiao
2020-05-20 17:37:55 +08:00
我面试其他的都还行,源码我也能大致的掰一掰,但是一设计程序题,我就要 go dead,简单的冒泡和快排还行,一旦这种长篇大论,钉钉卯卯我就等死了
lordofhollows
2020-05-20 18:05:48 +08:00
function alg(n) {
res = 0 // 吃到的桃子
x = n * 3 // 桃子数
y = 0 // 桃核数
while (x > 0 || y >= 3) {
res += x // 全吃掉
y += x // 扔桃核
x = Math.floor(y / 3) // 换桃子
y = y % 3 // 剩下的桃核
}
return res
}

alg(135142857) === 608142856
teaaa
2020-05-20 19:51:02 +08:00
这题我会,PHPer 假装加班来写一写,首先 桃子 = 桃核 这不一回事儿嘛。

$p_sum = 0; //拥有过的桃子计数
$p_now = 3 * 135142857; //当前拥有桃子数
$p_new = 3 * 135142857; //新换得的桃子数
$p_else = 0; //换完剩余的桃子数(余数)

//拥有 3 个以上桃子就跑去换:)
while($p_now >= 3){
$p_sum = $p_sum + $p_new; //拥有过的桃子数累加记在小本本上

$p_now = $p_new + $p_else; //抱着当前拥有的一坨桃子
$p_new = intval(floor($p_now / 3)); //跑去换来的新桃子
$p_else = $p_now%3; //剩下的旧桃子(余数)
}

dd($p_sum); //小本本最终结果 608142856


我好闲。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/673648

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX