码迷,mamicode.com
首页 > 其他好文 > 详细

Ducci Sequence

时间:2015-07-18 10:44:21      阅读:113      评论:0      收藏:0      [点我收藏+]

标签:

    
 

                       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... an技术分享 (| 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) 技术分享 (3, 9, 5, 1) 技术分享 (6, 4, 4, 2) 技术分享 (2, 0, 2, 4) 技术分享 (2, 2, 2, 2) 技术分享 (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) 技术分享 (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技术分享 ...

 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(3技术分享n技术分享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[20];
  int i,j,t,n,sum;
  cin>>t;
while(t--)
{
  cin>>n;
  for(i=0; i<n; i++)
  cin>>a[i];
 for(i=0; i<1000; i++)
{
  sum=0;   
  int s=a[0];//每循环一次a【0】的值都会变,所以要定义一个变量s
 for(j=0; j<n-1; j++)
{
  if(a[j]>a[j+1])
    a[j]=a[j]-a[j+1];
  else
    a[j]=a[j+1]-a[j];
      sum+=a[j];
}
  if(a[n-1]>s)
        a[n-1]=a[n-1]-s;
  else

    a[n-1]=s-a[n-1];
      sum+=a[n-1];
  if(sum==0)
     break;

}
  if(sum==0)
    cout<<"ZERO"<<endl;
  else
    cout<<"LOOP"<<endl;

}
  return 0;
}

 

Ducci Sequence

标签:

原文地址:http://www.cnblogs.com/hfc-xx/p/4656271.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!