Uva 1594 模拟
2016-06-28 09:21
260 查看
Ducci Sequence
Description
A Ducci sequence is a sequence of n-tuplesof integers. Given ann-tuple of integers (a1,a2, ... , an),
the nextn-tuple in the sequence is formed by taking the absolute differences of neighboring
integers:
(a1, a2, ..., 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 ofT testcases. The number of test cases T is given in the first line of the input. Each test case
starts with a line containing an integern (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
题意:
对于一个n元组(a0,a1,...),一次变换后变成(|a0-a1|,|a1-a2|,...)
问1000次变换以内是否存在循环。
思路:
模拟,map判重
#include <iostream> #include <cstdio> #include <map> #include <cmath> using namespace std; int main() { int t; cin>>t; while(t--){ map<string,bool> flag; int n; cin>>n; string ans; for(int i=0;i<n;i++){ ans+='0'; ans+=','; } //cout<<ans<<endl; int a[20]; for(int i=0;i<n;i++) cin>>a[i]; while(1){ string str; for(int i=0;i<n;i++){ char temp[20]; sprintf(temp,"%d",a[i]); string te=temp; str+=te; str+=','; } if(str==ans){ cout<<"ZERO"<<endl; break; } if(flag[str]){ cout<<"LOOP"<<endl; break; } flag[str]=1; int tem=a[0]; for(int i=0;i<n-1;i++) a[i]=abs(a[i]-a[i+1]); a[n-1]=abs(a[n-1]-tem); // cout<<str<<endl; } } }
相关文章推荐
- Okhttp使用简析——Android网络请求框架(一)
- bzoj2467: [中山市选2010]生成树
- [JZOJ4566]reimu hakurei
- 单机使用Docker host网络安装consul和registrator
- javascript oo实现(面向对象)
- 万年历
- Android studio 修改项目包名
- H5笔记2-H5对History的新操作
- Android 控制屏幕全屏,标题栏,导航栏,布局属性
- (转)SQL Server中使用convert进行日期转换
- rand求随机整数
- vs将dll和exe分开放的方法
- [bzoj1997] [Hnoi2010]Planar
- 王垠:完全用Linux工作
- Hibernate的七种映射关系之七种关联映射
- linux lsof详解
- nginx日志切割
- 细说五层网站架构
- 用isNaN函数判断是否是Number中的坑
- jenkins+git+maven+centos7自动化构建部署项目(二)