Java 谷歌Foobar挑战2级“;嘿,我已经做到了;
我需要帮助解决谷歌Foobar挑战的第二个层次Java 谷歌Foobar挑战2级“;嘿,我已经做到了;,java,algorithm,base,Java,Algorithm,Base,我需要帮助解决谷歌Foobar挑战的第二个层次 指挥官Lambda使用一种自动算法将随从随机分配到任务中,以便让她的随从保持警觉。但是你已经注意到了算法中的一个缺陷——它最终会自行循环,因此它不会在迭代时分配新的仆从,而是陷入一个值循环中,从而使相同的仆从一次又一次地完成相同的任务。你认为向Lambda指挥官证明这一点将有助于你为下一次晋升打下基础 您已经计算出该算法具有以下过程: 1) 从一个随机仆从ID n开始,它是基b中长度为k的非负整数 2) 将x和y定义为长度为k的整数。x按降序排列
指挥官Lambda使用一种自动算法将随从随机分配到任务中,以便让她的随从保持警觉。但是你已经注意到了算法中的一个缺陷——它最终会自行循环,因此它不会在迭代时分配新的仆从,而是陷入一个值循环中,从而使相同的仆从一次又一次地完成相同的任务。你认为向Lambda指挥官证明这一点将有助于你为下一次晋升打下基础 您已经计算出该算法具有以下过程: 1) 从一个随机仆从ID n开始,它是基b中长度为k的非负整数
2) 将x和y定义为长度为k的整数。x按降序排列n位,y按升序排列n位
3) 定义z=x-y。如有必要,将前导零添加到z以保持长度k
4) 分配n=z以获取下一个仆从ID,然后返回步骤2 例如,给定仆从ID n=1211,k=4,b=10,然后x=2111,y=1112和z=2111-1112=0999。然后下一个仆从ID将是n=0999,算法将再次迭代:x=9990、y=0999和z=9990-0999=8991,依此类推 根据n、k(由n导出)和b的值,算法在某个点达到一个循环,例如通过达到一个常量值。例如,从n=210022、k=6、b=3开始,算法将到达值的循环[210111、122221、102212],并且无论它继续迭代多少次,它都将停留在这个循环中。从n=1211开始,例程将到达整数6174,因为7641-1467是6174,所以无论迭代多少次,它都将保持该值 给定一个仆从ID作为字符串n,表示基b中长度为k的非负整数,其中2=0;我——){ newString.append(arr[i]); } if(newString.toString()包含(“-”){ newString.deleteCharAt(newString.length()-1); } 返回newString.toString(); } 公共静态字符串addLeadingZero(整数k,字符串z){ 如果(k>z.length()){ 字符串零=”; 对于(int i=0;i<(k-z.length());i++){ 零+=“0”; } 零+=z; 返回零; } 返回z; }
它只适用于十个测试用例中的三个输入的约束是什么n,它可以有多少位数?它没有告诉我纵向的输入限制,失败的测试用例报告了哪些类型的错误?NumberFormatExceptionError用于“base”不是10的情况。输入的限制是什么,它可以有多少位数?它没有告诉我对于失败测试用例报告的错误类型的纵向输入限制?对于“基数”不是10的情况,NumberFormatExceptionError。
def answer(n, b):
k = len(n)
m = n
mini_id = []
while m not in mini_id:
mini_id.append(m)
s = sorted(m)
x_descend = ''.join(s[::-1])
y_ascend = ''.join(s)
if b == 10:
int_m = int(x_descend) - int(y_ascend)
m = str(int_m)
else:
int_m_10 = int(to_base_10(x_descend, b)) - int(to_base_10(y_ascend, b))
m = to_base_n(str(int_m_10), b)
m = (k - len(m)) * '0' + m
return len(mini_id) - mini_id.index(m)
def answer(n, b):
k = len(n)
m = n
mini_id = []
while m not in mini_id:
mini_id.append(m)
s = sorted(m)
x_descend = ''.join(s[::-1])
y_ascend = ''.join(s)
if b == 10:
int_m = int(x_descend) - int(y_ascend)
m = str(int_m)
else:
int_m_10 = int(to_base_10(x_descend, b)) - int(to_base_10(y_ascend, b))
m = to_base_n(str(int_m_10), b)
m = (k - len(m)) * '0' + m
return len(mini_id) - mini_id.index(m)