首页 > 其他 > 详细

练习备份5

时间:2018-04-20 12:35:43      阅读:211      评论:0      收藏:0      [点我收藏+]
#include<stdio.h>
#define maxn 1001
int flag=0;
long long f[2][maxn*maxn];
void DP(int n)
{
    f[flag][0]=1;
    for(int i=1;i<n;i++)
    {
        flag=1-flag;
        for(int j=0;j<=i*(i+1)/2;j++)
        {
            if(i>j) f[flag][j]=f[1-flag][j];
            else if(i<=j) f[flag][j]=f[1-flag][j-i]+f[1-flag][j];
            f[flag][j]%=100000007;
        }    
    }    
} 
int main(void)
{
    int n,s,a,b;
    long long temp,cnt=0;
    scanf("%d%d%d%d",&n,&s,&a,&b);
    DP(n);
    for(long long i=0;i<=n*(n-1)/2;i++)
    {
        temp=s+b*(n-1)*n/2-b*i-a*i;
        if(temp%n==0)
        {
            cnt+=f[flag][i];
            cnt%=100000007;
        }
    }
    printf("%lld",cnt);
    return 0;
}

 

练习备份5

原文:https://www.cnblogs.com/zuimeiyujianni/p/8889605.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!