- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我受邀参加 Google 的 foobar 挑战赛。我目前处于 2.2 级,有以下问题。
可爱的幸运小羊
成为追随者并不全是苦差事。偶尔,当指挥官 Lambda 感到慷慨时,她会分发 Lucky LAMB(Lambda 的万能钱币)。追随者可以使用 Lucky LAMB 购买第二双 socks 、一个铺位枕头,甚至是每日第三顿饭!然而,实际分发 LAMB 并不容易。每个心腹小队都有严格的资历排名,必须遵守 - 否则心腹会造反,你们会再次降级为奴才!
为了避免反抗,您必须遵守 4 条关键规则:
- The most junior henchman (with the least seniority) gets exactly 1 LAMB. (There will always be at least 1 henchman on a team.)
- A henchman will revolt if the person who ranks immediately above them gets more than double the number of LAMBs they do.
- A henchman will revolt if the amount of LAMBs given to their next two subordinates combined is more than the number of LAMBs they get. (Note that the two most junior henchmen won't have two subordinates, so this rule doesn't apply to them. The 2nd most junior henchman would require at least as many LAMBs as the most junior henchman.)
- You can always find more henchmen to pay - the Commander has plenty of employees. If there are enough LAMBs left over such that another henchman could be added as the most senior while obeying the other rules, you must always add and pay that henchman.
请注意,您可能无法分发所有 LAMB。单个 LAMB 不能再分割。也就是说,所有的追随者都必须得到一个正整数的 LAMB。
编写一个名为 answer(total_lambs) 的函数,其中 total_lambs 是您要划分的讲义中 LAMB 的整数。它应该返回一个整数,表示可以分享 LAMB 的最小和最大追随者数量之间的差值(即,分别对你支付的人尽可能慷慨和尽可能吝啬),同时仍然遵守上述所有条件避免叛乱的规则。
For instance, if you had 10 LAMBs and were as generous as possible, you could only pay 3 henchmen (1, 2, and 4 LAMBs, in order of ascending seniority), whereas if you were as stingy as possible, you could pay 4 henchmen (1, 1, 2, and 3 LAMBs). Therefore, answer(10) should return 4-3 = 1. To keep things interesting, Commander Lambda varies the sizes of the Lucky LAMB payouts: you can expect total_lambs to always be between 10 and 1 billion (10 ^ 9).
我的方法和代码
为了找到最少的追随者,必须慷慨地分发 LAMB,其具有几何级数 1,2,4,8...由于几何级数的总和由
( $S = 2^n -1$ 因此追随者的数量是 [ log_2 (S+1) ]
为了找到最大的追随者,必须以小气的方式给出 LAMB,顺序看起来是 fibbonaci 1 , 1, 2, 3, 5 ... 我们可以使用 Fibonacci 指数方法来获得最大追随者的数量:
遵循python代码:
from math import sqrt
from math import log
from math import pow
def answer(total_lambs):
phi = (1+sqrt(5))/2 # golden search ratio
tau = (1-sqrt(5))/2 # equal to 1/phi
eps = pow(10, -10)
max_hunchmen = int(round(log((total_lambs + 1) * sqrt(5)+eps, phi))) - 2
Fib_num = int(round((pow(phi, max_hunchmen+2)-pow(tau,max_hunchmen+2))/sqrt(5)))
if total_lambs+1 < Fib_num:
max_hunchmen -= 1
min_hunchmen = int(log((total_lambs + 1), 2))
return abs(max_hunchmen - min_hunchmen)
有 10 个测试用例(Google 不会告诉您详细信息)。此代码通过了其中的 8 个,但在最后两个上失败了。我不确定这里是否存在我遗漏的边缘情况。非常感谢任何帮助/建议。谢谢!!
最佳答案
phi = (1+sqrt(5))/2
tau = (1-sqrt(5))/2
eps = pow(10, -10)
max_hunchmen = int(round(log((total_lambs + 1) * sqrt(5)+eps, phi))) - 2
Fib_num = int(round((pow(phi, max_hunchmen+2)-pow(tau,max_hunchmen+2))/sqrt(5)))
if total_lambs+1 < Fib_num:
max_hunchmen -= 1
elif total_lambs + 1 == Fib_num:
total_lambs = Fib_num
if (total_lambs + 1) % 2 == 0:
min_hunchmen = int(round(log((total_lambs + 1), 2)))
else:
min_hunchmen = int(log((total_lambs + 1), 2))
return abs(max_hunchmen - min_hunchmen)
关于python - 谷歌 foobar python : failure on two tests - lovely lucky lambs (counting of sequences),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43429328/
因为我不熟悉隐式类型;你能告诉我它们之间的主要区别吗: var foo = new Love(); 和 object foo = new Love(); 最佳答案 在第一种情况下,foo 的类型是L
VSCODE调试LOVE引擎游戏 安装插件 配置插件 按 CTRL + SHIFT + P ,打开 Preferences: Open User Sett
Monologue. Everylove` ▓Mr. sandman control、 ▍Only you ▍ -worth love° じAomrご 〆Nancy ゛
我已经设置了一个配置文件,并且刚刚开始编写一个程序来为基于文本的角色扮演游戏/模拟游戏设置标题屏幕。背景颜色似乎没有从默认的黑色改变,这就是问题所在。我已经在下面发布了我现有的代码。是的,我正在执行包
取自 - http://www.echojs.com/news/8518 这如何产生 window.alert("I love you");?我明白它如何从 Infinity 中获取 I,就是这样
Love is a carefully designed lie. 爱情是一个精心设计的谎言 A friend without faults will never be found.&
最美好的承诺不是我爱你,而是我们以后一起过日子。最浪漫的话不是我爱你,而是你拿出戒指对我说,嫁给我吧。女生喜欢听好话,但是不喜欢对方只是说说而已。
每当我用数组做这样的事情时,我都会遇到一个非常恼人的错误。我有在 love.load() 函数中设置数组的代码: function iceToolsInit() objectArray = {
我已经使用 TFS 大约 18 个月了,我对此并不感到兴奋。这似乎是市场上当前版本的 SCM 中最差的。 我认为这个线程将帮助人们决定 TFS 是适合他们还是其他源代码控制系统。虽然 TFS 的作用远
效果 安装库 安装两个库,分别用来读xml和csv,如果有luarocks,执行下列命令
You are the one [你是唯一] Block me and die. 擋我者死。 I got you. 我懂你. Your name with my life. [你的名
Time always save the best for last. 时间总是把最好的人留到最后。 The time that you are my most fatal. 光深知你是
Thintime(浅时光) Halo(光环) Cold mood(冷情绪) Unfinished Love(末了情) Forget me(忘记我) Calm(从容) Rampant(猖狂
爱情就像是一团火焰,而我们就像是飞蛾。虽然知道自己可能会粉身碎骨,但是还是义无反顾的向前冲不回头。不过恋爱经历那两个月甜蜜期以后就是正常的了,所以很多人能够恋爱却走不到最后。
Once the love dead 谢谢你光临我的梦 A people only a heart 一人仅一心 I will always love you我将会永远爱你 Down enoug
Time always endure. 时光向来熬人。 Reality is reality too 是现实太现实 Each youth will be old 每段青春都会苍老 Your n
我需要找到一个正则表达式来匹配每个句子,无论它是否在标题案例之后(句子中每个单词的第一个字母应该大写,并且单词也可以包含特殊字符)。 最佳答案 regex101 ([A-Z][^\s]*) Debug
我和我的 friend 最近一直在用 love2d 开发一款游戏,但在开发的早期阶段,我的电脑硬盘停止工作,这意味着只有我的 friend 可以在上面工作。现在我有一台电脑,我想在 Love2d 中制
所以我想知道如何根据我按下/正在按下的键来更改我创建的角色图像? 我的终极目标是在按下“d”(或任何 wasd 键)时出现行走动画,但当刚刚按下“d”键时他会静止不动,等等。所有图像都已创建. 我已经
我目前正在尝试通过 Pl/Sql (Oracle) 中的 dbms_ldap API 访问 Active Directory。问题是我无法使用自己的用户名和密码或任何方式连接。 但是,在 C# 中,我
我是一名优秀的程序员,十分优秀!