15 UVA10038 Jolly Jumpers
內容
有n個整數的序列我們稱為jolly jumper,如果相鄰的2個數其差的絕對值恰好為1到n-1。例如:
1 4 2 3
就是jolly jumper(n=4)。因為相鄰2數的差的絕對值為3,2,1,就是1到n-1。但是
1 4 2 -1 6
不是jolly jumper(n=5)。因為相鄰2數的差的絕對值為3,2,3,7,並非1到n-1。
你的任務是寫一個程式來判斷一個整數序列是否為jolly jumper。
輸入說明
每組測試資料一列,第一個正整數為 n(n < 3000),代表此整數序列的長度。接下來有n個整數,代表此整數序列。請參考Sample Input。
輸出說明
對每一組測試資料,輸出此整數序列是否為jolly jumper。請參考Sample Output。
範例輸入 #1
4 1 4 2 3
5 1 4 2 -1 6
範例輸出 #1
Jolly
Not jolly
題意:有n個整數的序列我們稱為jolly jumper,如果相鄰的2個數其差的絕對值恰好為1到n-1
while True:
try:
n = list(map(int, input().split())) # 讀取一行輸入並將其拆分成整數列表
except EOFError:
break # 如果遇到EOFError(通常表示輸入結束),則跳出迴圈
r = n[0] # 第一個元素是整數r,表示序列的長度
y = 0 # 初始化計數器y,用於統計符合條件的差的絕對值
x = [] # 創建一個空列表x,用於存儲差的絕對值
for i in range(1, r):
m = abs(n[i + 1] - n[i]) # 計算相鄰整數的差的絕對值並加入列表x
x.append(m)
x.sort() # 對列表x進行排序,以便後續比較
for a in range(1, r):
if x[a - 1] == a: # 檢查排序後的列表中是否包含1到r-1的所有差的絕對值
y += 1
if y == r - 1:
print("Jolly") # 如果y等於r-1,則輸出 "Jolly",表示為 "Jolly Jumper" 序列
else:
print("Not jolly") # 否則輸出 "Not jolly",表示不是 "Jolly Jumper" 序列