Advertisement
a53

k_s_t

a53
Jun 4th, 2018
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.02 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. #define mod 666013
  6.  
  7. int ans[ 1010 ][ 1010 ], use[ 1010 ][ 1010 ], n, k;
  8.  
  9. int solve( int a, int b )
  10. {
  11. if( use[ a ][ b ] )
  12. return ans[ a ][ b ];
  13. use[ a ][ b ] = 1;
  14. if( a >= k and b == 0 )
  15. {
  16. ans[ a ][ b ] = solve( a , k );
  17. return ans[ a ][ b ];
  18. }
  19. if( a < k and b == 0 )
  20. {
  21. ans[ a ][ b ] = 1;
  22. return ans[ a ][ b ];
  23. }
  24. if( a < b )
  25. {
  26. ans[ a ][ b ] = 0;
  27. return ans[ a ][ b ];
  28. }
  29.  
  30. if( b % 2 == 1 )
  31. {
  32. for( int i = 0 ; i < a ; i++ )
  33. ans[ a ][ b ] = ( ans[ a ][ b ] + 1ll * solve( i , b / 2 ) * solve( a - i - 1 , b / 2 ) ) % mod;
  34. return ans[ a ][ b ];
  35. }
  36. else
  37. {
  38. for( int i = 0 ; i < a ; i++ )
  39. ans[ a ][ b ] = ( ans[ a ][ b ] + 1ll * solve( i , 0 ) * solve( a - i - 1 , b - 1 ) ) % mod;
  40. return ans[ a ][ b ];
  41. }
  42. }
  43.  
  44. int main()
  45. {
  46. cin >> n >> k;
  47. cout << solve( n , k );
  48. return 0;
  49. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement