luogu P2312 解方程

    科技2024-05-19  80

    题面传送门 数据太大了,所以要hash。 多取几个模数正确性更高。 代码实现:

    #include<cstdio> #define mod 1000000007 using namespace std; int x,y,z,n,m,k,head,ans[100039],fff; long long tot,a[100039],now; char _s; int main(){ // freopen("1.in","r",stdin); register int i,j; scanf("%d%d",&n,&m); for(i=0;i<=n;i++) { _s=getchar();fff=1; while(_s<'0'||_s>'9') { if(_s=='-') fff=-1; _s=getchar(); } while(_s>='0'&&_s<='9') a[i]=(a[i]*10+_s-48)%mod,_s=getchar(); a[i]*=fff; a[i]=(a[i]+mod)%mod; } for(i=1;i<=m;i++){ now=a[n]; for(j=n-1;j>=0;j--) now=(now*i+a[j])%mod; if(!now){ ans[++head]=i; } } printf("%d\n",head); for(i=1;i<=head;i++) printf("%d\n",ans[i]); }
    Processed: 0.015, SQL: 8