UVA - 1594 Ducci Sequence

https://vjudge.net/problem/UVA-1594
在这里插入图片描述

set

#include<iostream>
#include<algorithm>
#include<set>
#include<vector>
using namespace std;
int main()
{
	int T;
	cin>>T;
	while(T--)
	{
		int n,x;
		cin>>n;
		vector<int> h;
		set<vector<int>> q;
		
		int f=0;
		for(int i=0;i<n;i++) h.push_back(0);
		q.insert(h);
		
		for(int i=0;i<n;i++) cin>>h[i];
		if(q.find(h)!=q.end()) 
			f=1;
		else
		{
			q.insert(h);
			while(1)
			{
				int t=h[0];
				for(int i=0;i<n-1;i++) h[i]=abs(h[i]-h[i+1]);
				h[n-1]=abs(t-h[n-1]);
				auto it=q.find(h);
				if(it!=q.end())
				{
					if(it==q.begin()) f=1;
					else f=0;
					break;
				}
				q.insert(h);
			}
		}
		if(f)
			cout<<"ZERO\n";
		else
			cout<<"LOOP\n";
	}
	return 0;
 } 

循环

#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
int main()
{
	int T;
	cin>>T;
	while(T--)
	{
		int n,x;
		vector<int> h;
		cin>>n;
		for(int i=0;i<n;i++)
		{
			cin>>x;
			h.push_back(x);
		}
		int cnt=0;
		while(cnt<=1000)
		{
			cnt++;
			int t=h[0],f=0;
			for(int i=0;i<n-1;i++)
			{
				h[i]=abs(h[i]-h[i+1]);
				if(h[i]) f=1;
			}
			h[n-1]=abs(t-h[n-1]);
			if(!f && !h[n-1]) break;
		}
		if(cnt<=1000)
			cout<<"ZERO\n";
		else
			cout<<"LOOP\n";
	}
	return 0;
}
posted @ 2021-08-19 12:28  斯文~  阅读(17)  评论(0)    收藏  举报

你好!