static int calc(int n, int m){ if(m < 1){ return 0; } int mod = 10007; int[] dp = new int[n+1]; dp[0] = 1; for(int i=1;i<=n;i++){ int start = Math.max(i-m,0); for(int j=start;j<=i-1;j++){ dp[i] = (dp[i] % mod + dp[j] % mod) % mod; } } return dp[n] % mod; }