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 }