hdu4472

 1 #include<iostream>
 2 #include<stdio.h>
 3 #include<string.h>
 4 #include<math.h>
 5 #define mod 1000000007
 6 long long dp[1010];
 7 void getdp()
 8 {
 9     memset(dp,0,sizeof(dp));
10     dp[1]=1;
11     for(int i=2;i<=1000;i++)
12     {
13         for(int j=1;j<=i;j++)
14         {
15             if ((i-1)%j==0) dp[i]+=dp[j],dp[i]=dp[i]%mod;
16         }
17     }
18     return;
19 }
20 int main()
21 {
22     getdp();
23     int cas=0;
24     int n;
25     while(~scanf("%d",&n))
26     {
27         cas++;
28         printf("Case %d: %I64d\n",cas,dp[n]);
29     }
30     return 0;
31 }
View Code

这是参考别人的思路,但是题目的思想很好,不舍得不写出来,附一篇好题解:

http://www.cnblogs.com/scau20110726/archive/2013/03/10/2953104.html

posted @ 2013-10-31 13:29  little_w  阅读(145)  评论(0)    收藏  举报