首页 > 代码库 > 洛谷比赛 Joe的数

洛谷比赛 Joe的数

/*开始暴力+滚动数组70后来发现不用循环很多找p的倍数 找%p意义下为0的就好了 */#include<iostream>#include<cstdio>#include<cstring>#define maxn 3010#define mod 1000000009using namespace std;int n,p,a[maxn],f[2][maxn],sum,ans;int main(){    scanf("%d%d",&n,&p);    for(int i=1;i<=n;i++){        scanf("%d",&a[i]);        a[i]%=p;    }    f[0][0]=1;    for(int i=1;i<=n;i++){        for(int j=0;j<=p;j++){            f[i&1][j]=(f[i&1][j]+f[i-1&1][(j-a[i]+p)%p])%mod;            f[i&1][j]=(f[i&1][j]+f[i-1&1][j])%mod;        }        for(int j=0;j<=p;j++)            f[i-1&1][j]=0;    }    printf("%d\n",f[n&1][0]);    return 0;}

 

洛谷比赛 Joe的数