比赛 20160316 评测结果 AAAAAEEEEE
题目名称 无关的数 最终得分 50
用户昵称 mikumikumi 运行时间 0.905 s
代码语言 C++ 内存使用 95.79 MiB
提交时间 2016-03-16 20:38:10
显示代码纯文本
#include<cstdio>
#include<iostream>
using namespace std;
const int SIZEN=5001,SIZEP=10000;
int prime[SIZEP];
int cnt=0;
int N,M;
void Prime()
{
	bool co[SIZEN]={0};
	for(int i=2;i<=N;i++)
	{
		if(!co[i]) prime[++cnt]=i;
		for(int j=1;j<=cnt&&prime[j]*i<=N;j++)
		{
			co[i*prime[j]]=1;
			if(i%prime[j]==0) break;
		}
	}
}
int s[SIZEP]={0};
bool check(int x)
{
	for(int i=1;i<=cnt;i++)
	{
		int now=0;
		while(x%prime[i]==0)
		{
			x/=prime[i];
			now++;
		}
		if(now>s[i]) return 0;
	}
	if(x>0) return 0;
	return 1;
}
void add(int x,int t)
{
	if(x==1||x==0) return;
	for(int i=1;i<=cnt;i++)
	{
		while(x%prime[i]==0)
		{
			x/=prime[i];
			s[i]+=t;
		}
	}
}
int C[SIZEN][SIZEN]={0};
void DP()
{
	C[0][0]=1;
	for(int i=1;i<=N;i++)
	{
		C[i][0]=1;
		for(int j=1;j<=i;j++) C[i][j]=(C[i-1][j-1]+C[i-1][j])%M;
	}
}
int main()
{
	freopen("irre.in","r",stdin);
	freopen("irre.out","w",stdout);
	scanf("%d%d",&N,&M);
	DP();
	int ans=0;
	for(int i=0;i<N;i++)
	{
		if(!C[N-1][i]) ans++;
	}
	printf("%d\n",ans);
	for(int i=0;i<N;i++) if(!C[N-1][i]) printf("%d ",i+1);
	return 0;
}