首页 > 其他 > 详细

Ducci Sequence

时间:2015-07-18 10:43:30      阅读:112      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!