hdu 4472 dp

来源:互联网 发布:sql insert update 编辑:程序博客网 时间:2024/06/05 07:09

http://acm.hdu.edu.cn/showproblem.php?pid=4472

第一直觉找规律,第二直觉 把树拆成子树,然后递推或者DP

然后发现不行,然后才发现自己题都没读,,,,

dp[i]=segma(dp[j] | (i-1)%j==0)

#include <cstdio>#include <cstring>#include <cstring>const int MAXN = 1000+50;const int MOD  = 1e9+7;#define ll long longll dp[MAXN];void init(){    memset(dp,0,sizeof(dp));    dp[1]=1;    for(int i=2;i<=1000;i++)        for(int j=1;j<i;j++){            if((i-1)%j == 0)                dp[i]=(dp[i]+dp[j])%MOD;    }}int main(){    init();    int ic=0,n;    while(~scanf("%d",&n)){        printf("Case %d: %I64d\n",++ic,dp[n]);    }    return 0;}


0 0