比赛 新春水题赛 评测结果 AETTTTTEEE
题目名称 他的圆圈 最终得分 10
用户昵称 Fancy 运行时间 28.048 s
代码语言 C++ 内存使用 1.07 MiB
提交时间 2016-02-07 18:26:25
显示代码纯文本
#include<cstdio>
#include<map>
using namespace std;
int n,ans,a[200001];
map<unsigned,int> m;
void dfs(int step)
{
	if(step==n+1)
	{
		unsigned x=0;
		for(int i=1;i<=n;i++) x=x*2+a[i];
		if(m[x]) return;
		ans++;
 		for(int j=1;j<=n;j++)
		{
			x=0;
			for(int i=1;i<=n;i++)
			{
				if(i<=j) x=x*2+a[n-j+i];
				else x=x*2+a[i-j];
			}
			m[x]=1;
		}
		return;
	}
	a[step]=1;dfs(step+1);
	a[step]=0;dfs(step+1);
}
int main()
{
	freopen("Hescircle.in","r",stdin);
	freopen("Hescircle.out","w",stdout);
	scanf("%d",&n);
	dfs(1);
	printf("%d\n",ans);
	return 0;
}