简单模拟
STL判重
//#pragma GCC optimize(2)
#include <cstdio>
#include <iostream>
#include <cstdlib>
#include <cmath>
#include <cctype>
#include <string>
#include <cstring>
#include <algorithm>
#include <stack>
#include <queue>
#include <set>
#include <sstream>
#include <map>
#include <ctime>
#include <vector>
#include <fstream>
#include <list>
#include <iomanip>
#include <numeric>
using namespace std;
typedef long long ll;
const int MAXN = 1e6 + 10;
int len;
int arr[20];
string trans()
{
string ret = "";
for(int i = 0; i < len; i++)
{
ret = ret + "-";
int tmp = arr[i];
while(tmp)
{
ret = ret + char((tmp % 10)+'0');
tmp /= 10;
}
}
return ret;
}
bool judge()
{
for(int i = 0; i < len; i++)
if(arr[i] != 0)
return false;
return true;
}
int main()
{
//ios::sync_with_stdio(false);
//cin.tie(0); cout.tie(0);
//freopen("D://test.in", "r", stdin);
//freopen("D://test.out", "w", stdout);
int t;
cin>>t;
while(t--)
{
cin>>len;
for(int i = 0; i < len; i++)
cin>>arr[i];
set <string> ST;
ST.insert(trans());
while(1)
{
int rt = arr[0];
for(int i = 0; i < len - 1; i++)
{
arr[i] = abs(arr[i] - arr[i + 1]);
}
arr[len - 1] = abs(arr[len - 1] - rt);
if(judge())
{
cout<<"ZERO"<<endl;
break;
}
string ss = trans();
if(ST.count(ss))
{
cout<<"LOOP"<<endl;
break;
}
else
ST.insert(ss);
}
}
return 0;
}