close
Content

Ducci sequence是整數n元組序列。
規則是給定一個n元組序列 (a1, a2, ..., an),該序列中的下一個n元組序列是通過獲取相鄰整數的絕對差形成的:

(a1, a2, ..., an) → (|a1 - a2|, |a2 - a3|, ..., |an - a1|)

Ducci sequence到最後會達到零元組或者陷入週期性循環。
例如:

(8, 11, 2, 7)開頭的4元組序列,需要5個步驟達到零元組:

(8, 11, 2, 7) → (3, 9, 5, 1) → (6, 4, 4, 2) → (2, 0, 2, 4) → (2, 2, 2, 2) → (0, 0, 0, 0)

(4, 2, 0, 2, 0)開頭的5元組序列,在第2個步驟進入週期性循環:

(4, 2, 0, 2, 0) → (2, 2, 2, 2, 4) → (0, 0, 0, 2, 2) → (0, 0, 2, 0, 2) → (0, 2, 2, 2, 2) → (2, 0, 0, 0, 2) →
(2, 0, 0, 2, 0) → (2, 0, 2, 2, 2) → (2, 2, 0, 0, 0) → (0, 2, 0, 0, 2) → (2, 2, 0, 2, 2) → (0, 2, 2, 0, 0) →
(2, 0, 2, 0, 0) → (2, 2, 2, 0, 2) → (0, 0, 2, 2, 0) → (0, 2, 0, 2, 0) → (2, 2, 2, 2, 0) → (0, 0, 0, 2, 2) → 

給定一個整數n元組序列,請你判斷該序列是達到零元組還是進入週期性循環。

Input

輸入第一行為一個整數T,代表以下包含T個Case。
每個Case第一行有一個整數n (3 ≤ n ≤ 15),該行表示Ducci sequences中元組的大小。
接下來一行有n個整數ai (0 ≤ ai ≤ 1000)。
你可以假設Ducci sequences達到零元組或進入週期性循環的最大步數不超過1000。

Output

每個Case輸出一行
如果Ducci sequence進入週期性循環
輸出"LOOP"
如果Ducci sequence達到零元組
輸出"ZERO"

Sample Input #1
4
4
8 11 2 7
5
4 2 0 2 0
7
0 0 0 0 0 0 0
6
1 2 3 1 2 3
Sample Output #1
ZERO
LOOP
ZERO
LOOP

python:

T=int(input())

for _ in range(T):
    n=int(input())
    m=0
    arr=[int(x) for x in input().split()]
    liberary=[]
    simple=[0]
    while arr not in liberary:
        arr00=arr[:]
        liberary.append(arr00)
        arr.append(arr[0])
        newarr=[]
        for i in range(len(arr)-1):
            newarr.append(abs(arr[i]-arr[i+1]))
        if newarr==[0]*n:print('ZERO');m=1;break
        arr=newarr[:]
        
    if m==0:print('LOOP')
arrow
arrow
    文章標籤
    python 高中生程式解題 UVA
    全站熱搜
    創作者介紹
    創作者 趴趴熊日常 的頭像
    趴趴熊日常

    資工趴趴熊的小天地

    趴趴熊日常 發表在 痞客邦 留言(0) 人氣()