t=int(input())
while t:
t=t-1
n,k=map(int,input().split())
a=n
b=n-1
l=[]
c=1
for i in range (1,n+1):
l.append(i)
while (k>n):
if(c%2==1):
n=n+b
p=n
c=c+1
for j in range (1,a+1):
l[j]=p
p=p-1
if(c%2==0):
n=n+b
p=n
c=c+1
for z in range (1,a+1):
l[j]=p-b
p=p+1
print(l.index(k))
在第17行... l [j] = p中出现错误“ IndexError:列表分配索引超出范围”
问题是Alex在一家知名的跨国公司中担任初级程序员。亚历克斯在编程方面并不擅长,他的程序通常存在很多错误。因此,他的老板总是对亚历克斯很生气。作为嫉妒的同事,您决定建议老板这次以怪异的方式惩罚亚历克斯。
[Alex受惩罚,以至于他必须在包含编号为1到N的N个楼梯的楼梯上攀登K楼梯。如果K大于N,在Alex到达第N楼梯后,他将转过180度,然后继续向下走直到到达Kth楼梯;到达终点后,如果仍然没有到达Kth楼梯,他将再次转过180度,以类似的方式继续惩罚,直到他完成所有K楼梯的爬升。亚历克斯必须在完成所有K步后报告他所在的楼梯编号。
您已决定编写一个程序,以在K步之后检查Alex的真实性来找到Alex的位置。
例如:-如果N = 6&K = 15,那么Alex将在步骤n中结束。 5。
__|
__| 6
__| 5,7,15
__| 4,8,14
__| 3,9,13
__| 2,10,12
1,11
输入:第一行将包含T,即测试用例的数量。然后是测试用例。每个测试用例包含一行输入,两个整数N,K。输出:对于每个测试用例,请在K步之后输出步号。
Constraints
1≤T≤100
1≤N,K≤109
Sample Input:
3
6 15
5 12
4 9
Sample Output:
5
4
3
对不起,我无法调试您的代码。
此外,当您在n
上迭代时,代码可能会给您一个超时错误,该错误可能与10^9
一样大。这将永远无法及时完成。
使用您制作的图表,我得出了一个适用于案例的公式。我不知道该算法为何有效。它主要是通过观察图表来实现的。
for _ in range(int(input())):
n, k = map(int, input().split())
try:
m = k % ((n - 1) * 2)
except ZeroDivisionError: # In case n=1
print(1)
continue
if 1 <= m <= n:
print(m)
elif m == 0:
print(2)
else:
print(n - (m - n))