[BZOJ3751][NOIP2014]解方程

来源:互联网 发布:发货打印软件 编辑:程序博客网 时间:2024/05/16 19:52

原题地址

论RP的重要性…随便找了4个素数取模AC了…

BZOJ貌似加强了数据,不过还是过了…

#include <cstdio>#include <cstring>const int N=101;const int L=10010;const int M=1000010;const int TOT=4;int  n,m,ans;int  p[TOT+1],a[N],len[N];bool flg[M];char s[N][L];void make_list(){    p[1]=22349;    p[2]=22367;    p[3]=22369;    p[4]=17389;}int main(){    make_list();    scanf("%d%d",&n,&m);    for(int i=0;i<=n;i++) scanf("%s",s[i]);    for(int i=0;i<=n;i++) len[i]=strlen(s[i]);    for(int i=1;i<=TOT;i++){        for(int j=0;j<=n;j++){            int flag=(s[j][0]=='-'?1:0);            a[j]=0;            for(int k=flag;k<len[j];k++) a[j]=(a[j]*10+s[j][k]-'0')%p[i];            if(flag) a[j]=-a[j];        }        for(int j=1;j<=p[i];j++){            int tmp=0;            for(int k=n;k>=0;k--) tmp=(tmp*j+a[k])%p[i];            if(tmp) for(int k=0;j+k*p[i]<=m;k++) flg[j+k*p[i]]=1;        }    }    for(int i=1;i<=m;i++) if(!flg[i]) ans++;    printf("%d\n",ans);    for(int i=1;i<=m;i++) if(!flg[i]) printf("%d\n",i);    return 0;}
0 0
原创粉丝点击