UVA 1594 Ducci Sequence(两极问题)

时间:2022-05-10 13:39:27
    
 

Ducci Sequence

Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu

 

Description

A Ducci sequence is a sequence of n-tuples of integers. Given an n-tuple of integers (a1a2, ... an), the next n-tuple in the sequence is formed by taking the absolute differences of neighboring integers:

a1a2... anUVA 1594 Ducci Sequence(两极问题) (| a1 - a2|,| a2 - a3|, ... ,| an - a1|)

Ducci sequences either reach a tuple of zeros or fall into a periodic loop. For example, the 4-tuple sequence starting with 8,11,2,7 takes 5 steps to reach the zeros tuple:

(8, 11, 2, 7) UVA 1594 Ducci Sequence(两极问题) (3, 9, 5, 1) UVA 1594 Ducci Sequence(两极问题) (6, 4, 4, 2) UVA 1594 Ducci Sequence(两极问题) (2, 0, 2, 4) UVA 1594 Ducci Sequence(两极问题) (2, 2, 2, 2) UVA 1594 Ducci Sequence(两极问题) (0, 0, 0, 0).

The 5-tuple sequence starting with 4,2,0,2,0 enters a loop after 2 steps:

(4, 2, 0, 2, 0) UVA 1594 Ducci Sequence(两极问题) (2, 2, 2, 2, 4) UVA 1594 Ducci Sequence(两极问题) ( 0, 0, 0, 2, 2UVA 1594 Ducci Sequence(两极问题) (0, 0, 2, 0, 2) UVA 1594 Ducci Sequence(两极问题) (0, 2, 2, 2, 2) UVA 1594 Ducci Sequence(两极问题) (2, 0, 0, 0, 2) UVA 1594 Ducci Sequence(两极问题)(2, 0, 0, 2, 0) UVA 1594 Ducci Sequence(两极问题) (2, 0, 2, 2, 2) UVA 1594 Ducci Sequence(两极问题) (2, 2, 0, 0, 0) UVA 1594 Ducci Sequence(两极问题) (0, 2, 0, 0, 2) UVA 1594 Ducci Sequence(两极问题) (2, 2, 0, 2, 2) UVA 1594 Ducci Sequence(两极问题) (0, 2, 2, 0, 0) UVA 1594 Ducci Sequence(两极问题)(2, 0, 2, 0, 0) UVA 1594 Ducci Sequence(两极问题) (2, 2, 2, 0, 2) UVA 1594 Ducci Sequence(两极问题) (0, 0, 2, 2, 0) UVA 1594 Ducci Sequence(两极问题) (0, 2, 0, 2, 0) UVA 1594 Ducci Sequence(两极问题) (2, 2, 2, 2, 0) UVA 1594 Ducci Sequence(两极问题) ( 0, 0, 0, 2, 2UVA 1594 Ducci Sequence(两极问题) ...

Given an n-tuple of integers, write a program to decide if the sequence is reaching to a zeros tuple or a periodic loop.

Input

Your program is to read the input from standard input. The input consists of T test cases. The number of test cases T is given in the first line of the input. Each test case starts with a line containing an integer n(3UVA 1594 Ducci Sequence(两极问题)nUVA 1594 Ducci Sequence(两极问题)15), which represents the size of a tuple in the Ducci sequences. In the following line, n integers are given which represents the n-tuple of integers. The range of integers are from 0 to 1,000. You may assume that the maximum number of steps of a Ducci sequence reaching zeros tuple or making a loop does not exceed 1,000.

Output

Your program is to write to standard output. Print exactly one line for each test case. Print `LOOP' if the Ducci sequence falls into a periodic loop, print `ZERO' if the Ducci sequence reaches to a zeros tuple.

The following shows sample input and output for four test cases.

Sample Input

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

ZERO
LOOP
ZERO
LOOP

题解:给定数组,依次求前一个减后一个的值的绝对值,如果是最后一个则是最后一个减第一个的值的绝对值,

最多循环1000次,如果出现数组的值全部变为0,则为ZERO,否则为LOOP,所以只求全部为0的情况即可。

#include<iostream>
using namespace std;
int main()
{int a[];
int i,j,t,n,sum;
cin>>t;
while(t--)
{
cin>>n;
for(i=; i<n; i++)
cin>>a[i];
for(i=; i<; i++)
{ sum=;
int s=a[];
for(j=; j<n-; j++)
{
if(a[j]>a[j+])
a[j]=a[j]-a[j+];
else
a[j]=a[j+]-a[j];
sum+=a[j]; } if(a[n-]>s)
a[n-]=a[n-]-s;
else a[n-]=s-a[n-];
sum+=a[n-];
if(sum==)
break; } if(sum==)
cout<<"ZERO"<<endl;
else
cout<<"LOOP"<<endl; }
return ;
}