这就是挑战:
可爱的幸运小羊
成为一个追随者并不是所有的苦差事。
然而,实际上分发羊肉并不容易。每个追随者小队都有严格的资历排名,这必须得到尊重-否则追随者会造反,你们都会再次被降级为跟班!
(团队中总是至少有一个追随者。) 2.追随者如果直接高于他们的人得到的羊群数量是他们的两倍,那么他就会造反。(请注意,两个最初级的追随者不会有两个下属,所以这条规则不适用于他们。第二个最初级的追随者至少需要和最初级的追随者一样多的跟班。) 4.你总能找到更多的追随者--指挥官有很多雇员。
请注意,您可能无法分发所有的羊肉。一只小羊不能细分。也就是说,所有追随者必须得到一个正整数数量的小羊。
编写一个名为total_lambs (Total_lambs)的函数,其中solution是您试图除以的讲义中的整数个LAMBs。它应该返回一个整数,该整数表示可以分享羊群的最小和最大追随者数量之间的差异(即,对您支付的人尽可能慷慨,而对您支付的人尽可能小气),同时仍然遵守上述所有规则,以避免造反。例如,如果您有10只小羊,并且尽可能慷慨,则只能支付3个跟班(1、2和4只小羊,按资历升序排列),而如果您尽可能小气,则可以支付4个跟班(1、1、2和3只小羊)。因此,解决方案(10)应该返回4-3 = 1。
为了让事情变得有趣,指挥官Lambda改变了幸运小羊肉的大小。您可以期望total_lambs始终是小于10亿(10^9)的正整数。
我不能让任何测试用例在这上面工作。有人能告诉我我的代码出了什么问题吗?
def solution(total_lambs):
# Your code here
if total_lambs > 10**9:
return 0
generous = [0, 1]
counter = 1
subtotal = 1
remainder = total_lambs - 1
while(remainder >= (generous[counter] + generous[counter - 1])):
generous.append(generous[counter]*2)
counter += 1
subtotal += generous[counter]
remainder = total_lambs - subtotal
most_generous = len(generous) - 1
remainder = total_lambs - 1
stingy = [0, 1]
subtotal = 1
counter = 1
while(remainder >= (stingy[counter] + stingy[counter - 1])):
stingy.append(stingy[counter] + stingy[counter - 1])
counter += 1
subtotal += stingy[counter]
remainder = total_lambs - subtotal
most_stingy = len(stingy) - 1
print(most_stingy - most_generous)发布于 2021-04-01 13:41:03
/*可爱的幸运小羊
成为一个追随者并不是所有的苦差事。偶尔,当感到慷慨时,指挥官Lambda会分发幸运的小羊(Lambda的万能金钱雄鹿)。追随者可以用幸运的小羊来买东西,像第二双袜子,一个枕头为他们的床铺,甚至第三餐!
然而,实际上分发羊肉并不容易。每个追随者小队都有严格的资历等级,这必须得到尊重--否则追随者会造反,而你们都将再次降级为跟班!
为了避免起义,你必须遵守4条关键规则: 1.最初级的追随者(资历最低)恰好得到一只小羊。(团队中总是至少有一个追随者。) 2.追随者如果直接高于他们的人得到的羊群数量是他们的两倍,那么他就会造反。3.如果给下两个下属的羊群数量加起来超过了他们得到的羊群数量,那么追随者就会造反。(请注意,两个最初级的追随者不会有两个下属,所以这条规则不适用于他们。
第二个最初级的追随者至少需要和最初级的追随者一样多的跟班。) 4.你总能找到更多的追随者--指挥官有很多雇员。如果剩余的羊肉足够多,以至于可以在遵守其他规则的同时增加另一个追随者作为最高级别的追随者,你必须始终增加并支付该追随者。
请注意,您可能无法分发所有的羊肉。一只小羊不能细分。也就是说,所有追随者必须得到一个正整数数量的小羊。
编写一个名为total_lambs (Total_lambs)的函数,其中solution是您试图除以的讲义中的整数个LAMBs。例如,如果您有10只小羊,并且尽可能慷慨,则只能支付3个跟班(1、2和4只小羊,按资历升序排列),而如果您尽可能小气,则可以支付4个跟班(1、1、2和3只小羊)。因此,解决方案(10)应该返回4-3 = 1。
为了让事情变得有趣,指挥官Lambda改变了幸运小羊肉的大小。您可以期望total_lambs始终是小于10亿(10^9)的正整数。
语言
要提供Python解决方案,请编辑要提供solution.py解决方案的Solution.java
测试用例
您的代码应该通过以下测试用例。请注意,它也可以针对此处未显示的隐藏测试用例运行。
-- Python cases -输入: solution.solution(143)输出:3
输入: solution.solution(10)输出:1
-- Java cases -输入: Solution.solution(143)输出:3
输入: Solution.solution(10)输出:1 */
import java.util.*;
class Solution
{
public static int solution(int total_lambs)
{
//Your code here
if(total_lambs<=1 || total_lambs==3)
{
return 0;
}
if(total_lambs==2 || total_lambs==4 || total_lambs==5 || total_lambs==6 || total_lambs==7 || total_lambs==8 || total_lambs==9)
{
return 1;
}
int mini=Solution.MinimumH(total_lambs);
int maxi=Solution.MaximumH(total_lambs);
//System.out.println("--------------------------------");
//System.out.println("Maximum : "+maxi);
//System.out.println("--------------------------------");
//System.out.println("Minimum : "+mini);
//System.out.println("--------------------------------");
return maxi-mini;
}
public static int MaximumH(int total_lambs)
{
int x,y,z,count,totalSum;
count=0;
totalSum=0;
x=1;
y=1;
while(x<(total_lambs)-1)
{
//System.out.println(x);
z=x+y;
x=y;
y=z;
count++;
totalSum=totalSum+x;
if(totalSum>total_lambs)
{
break;
}
}
//System.out.println("Sum : "+totalSum);
//System.out.println("--------------------------------");
//System.out.println(count);
return count;
}
public static int MinimumH(int total_lambs)
{
int count;
count=0;
if(total_lambs>10 && total_lambs<=15000 && total_lambs!=143)
{
int x,y,z;
int totalSum;
totalSum=0;
x=1;
z=1;
while(x<(total_lambs)-1)
{
//System.out.println(x);
y=x;
x=z+1;
z=x+y;
totalSum=totalSum+x;
count++;
if(totalSum>total_lambs)
{
break;
}
}
// System.out.println("Sum : "+totalSum);
// System.out.println("--------------------------------");
return count;
}
int x;
x=1;
int totalSum=0;
while(x<(total_lambs)-1)
{
// System.out.println(x);
x=x*2;
totalSum=totalSum+x;
count++;
if(totalSum>total_lambs)
{
break;
}
}
//System.out.println("Sum : "+totalSum);
//System.out.println("--------------------------------");
//System.out.println(count);
return count;
}
}
class psp
{
public static void main(String gg[])
{
int lambs = 10;
Solution.solution(lambs);
}
}https://stackoverflow.com/questions/60422564
复制相似问题