样例没过求调
查看原帖
样例没过求调
541254
BugGod楼主2023/12/14 19:46

RT,样例都没过。。。

#include<bits/stdc++.h>
using namespace std;
const int p=99991;
struct node
{
	int a[10];
};
int n,a[10];
vector<node>lb[100010];
int cal(int a[])
{
	int add=0,mul=1;
	for(int i=1;i<=6;i++)
	{
		add=(add+a[i])%p;
		mul=(mul*a[i])%p;
	}
	return (add+mul)%p;
}
int equal(int a[],int b[])
{
	for(int i=1;i<=6;i++)
	{
		for(int j=1;j<=6;j++)
		{
			int flag=1;
			for(int k=1;k<=n;k++)
			{
				if(a[(i+k)%6+1]!=b[(j+k)%6+1])
				{
					flag=0;
					break;
				}
			}
			if(flag)return 1;
			for(int k=1;k<=n;k++)
			{
				if(a[(i+k)%6+1]!=b[(j-k+6)%6+1])
				{
					flag=1;
					break; 
				}
			}
			if(!flag)return 1;
		}
	}
	return 0;
}
node tonode(int a[])
{
	node ans;
	for(int i=1;i<=6;i++)ans.a[i]=a[i];
	return ans;
}
int insert(int a[])
{
	int hs=cal(a);
	for(int i=0;i<lb[hs].size();i++)
	{
		if(equal(a,lb[hs][i].a))return 1;
	}
	lb[hs].push_back(tonode(a));
	return 0;
}
signed main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=6;j++)cin>>a[i];
		if(insert(a))return cout<<"Twin snowflakes found.",0;
	}
	cout<<"No two snowflakes are alike.";
	return 0;
}
2023/12/14 19:46
加载中...