Test

import java.util.*;

import static java.lang.System.out;
 
public class KTree {
    static final int MOD = (int) (1e9+7);
    public static void main(String[] args){
        long[][] dp = new long[105][2];
        int n,k,d;
        Scanner scan = new Scanner(System.in);
        n = scan.nextInt();
        k = scan.nextInt();
        d = scan.nextInt();
        dp[0][0] = 1;
        for (int i = 0;i <= n;i++){
            for (int j = 1;j <= k;j++){
                if (i + j > n)  continue;
 
                if (j < d)  dp[i + j][0] += dp[i][0];
                else dp[i + j][1] += dp[i][0];
 
                dp[i + j][1] += dp[i][1];
 
                dp[i + j][0] %= MOD;
                dp[i + j][1] %= MOD;
            }
        }
        out.println(dp[n][1]);
    }
}

 

 1 import java.util.*;
 2  
 3 import static java.lang.System.out;
 4   
 5 public class KTree {
 6     static final int MOD = (int) (1e9+7);
 7     public static void main(String[] args){
 8         long[][] dp = new long[105][2];
 9         int n,k,d;
10         Scanner scan = new Scanner(System.in);
11         n = scan.nextInt();
12         k = scan.nextInt();
13         d = scan.nextInt();
14         dp[0][0] = 1;
15         for (int i = 0;i <= n;i++){
16             for (int j = 1;j <= k;j++){
17                 if (i + j > n)  continue;
18   
19                 if (j < d)  dp[i + j][0] += dp[i][0];
20                 else dp[i + j][1] += dp[i][0];
21   
22                 dp[i + j][1] += dp[i][1];
23   
24                 dp[i + j][0] %= MOD;
25                 dp[i + j][1] %= MOD;
26             }
27         }
28         out.println(dp[n][1]);
29     }
30 }


 

 1 import java.util.*;
 2  
 3 import static java.lang.System.out;
 4   
 5 public class KTree {
 6     static final int MOD = (int) (1e9+7);
 7     public static void main(String[] args){
 8         long[][] dp = new long[105][2];
 9         int n,k,d;
10         Scanner scan = new Scanner(System.in);
11         n = scan.nextInt();
12         k = scan.nextInt();
13         d = scan.nextInt();
14         dp[0][0] = 1;
15         for (int i = 0;i <= n;i++){
16             for (int j = 1;j <= k;j++){
17                 if (i + j > n)  continue;
18   
19                 if (j < d)  dp[i + j][0] += dp[i][0];
20                 else dp[i + j][1] += dp[i][0];
21   
22                 dp[i + j][1] += dp[i][1];
23   
24                 dp[i + j][0] %= MOD;
25                 dp[i + j][1] %= MOD;
26             }
27         }
28         out.println(dp[n][1]);
29     }
30 }
posted @ 2017-08-04 23:27  afflatus  阅读(132)  评论(1编辑  收藏  举报