fork download
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4.  
  5. vector<long long int> dp;
  6. const unsigned int M = 1000000007;
  7.  
  8. int helper(long long int start, long long int N, int K) {
  9. cout<<start<<" "<<N<<" "<<K<<"\n";
  10. if(start>N) return 0;
  11. if(start==N) return 1;
  12. if(dp[start]!=0) {
  13. return dp[start];
  14. }
  15.  
  16. int ans=0;
  17. ans=(helper(start+1, N, K)%M + helper(start+2, N, K)%M)%M;
  18. if(K>0) {
  19. K--;
  20. ans=(ans%M+helper(start+3, N, K)%M)%M;
  21. }
  22.  
  23. return dp[start]=ans;
  24. }
  25.  
  26. int main() {
  27. int T;
  28. cin>>T;
  29. while(T--) {
  30. long long int N;
  31. int K;
  32. cin>>N>>K;
  33. dp.clear();
  34. dp.resize(N+5, 0);
  35. cout<<helper(0, N, K)<<"\n";
  36. }
  37.  
  38. return 0;
  39. }
Success #stdin #stdout 0s 4392KB
stdin
1
7 1
stdout
0 7 1
1 7 1
2 7 1
3 7 1
4 7 1
5 7 1
6 7 1
7 7 1
8 7 1
9 7 0
7 7 1
8 7 0
6 7 1
7 7 0
5 7 1
6 7 0
4 7 1
5 7 0
3 7 1
4 7 0
2 7 1
3 7 0
44