比赛 |
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;
}