记录编号 33991 评测结果 AAAAA
题目名称 [HAOI 2004模拟]数列问题 最终得分 100
用户昵称 GravatarQhelDIV 是否通过 通过
代码语言 C++ 运行时间 0.063 s
提交时间 2011-11-24 19:53:35 内存使用 0.27 MiB
显示代码纯文本
#include<cstdio>
#include<iostream>
using namespace std;

int n,list[21],total,J[201];
bool flag[21],T[201];

bool check(int obj)
{
	int i;
	for(i=2;J[i]<=obj;i++)
		if(obj%i==0)
			return false;
	return true;
}

void Init()
{
int i;
	cin>>n;
	for(i=1;i<=n;i++)
		flag[i]=true;
	for(i=1;i<=200;i++)
	{
		J[i]=i*i;
		T[i]=check(i);
	}
}

void Dfs(int pos)
{
int i;
	if(pos>n)
	{
		int bo=true;
		int sum=0;
		if(bo)
		{
			for(i=1;i<=n;i++)
				printf("%d ",list[i]);
			printf("\n");
			total++;
		}
			
	}
	for(i=1;i<=n;i++)
		if(flag[i] && (T[i+list[pos-1]] || pos==1))
		{
			flag[i]=false;
			list[pos]=i;
			Dfs(pos+1);
			flag[i]=true;
		}
	
}

int main()
{	freopen("dfs3.in","r",stdin);
	freopen("dfs3.out","w",stdout);
	Init();
	
	Dfs(1);
	
	cout<<total<<endl;
	
	return 0;
}