• Source
    1. #include<bits/stdc++.h>
    2. #define mod 1000000
    3.  
    4. using namespace std;
    5.  
    6. long long check[103][103];
    7.  
    8. int n,k;
    9.  
    10. long long num_of_ways(int N,int K)
    11. {
    12. long long sum = 0;
    13.  
    14. if(check[N][K]!=-1)
    15. {
    16. return check[N][K];
    17. }
    18.  
    19. if(N==0 || K==0)
    20. {
    21. return 1;
    22. }
    23.  
    24. if(K==1)
    25. {
    26. return N;
    27. }
    28.  
    29. if(K==2)
    30. {
    31. return N+1;
    32. }
    33.  
    34. for(int i=0 ; i<=N; i++)
    35. {
    36. sum += num_of_ways(N-i,K-1)%mod;
    37. }
    38.  
    39. check[N][K] = sum;
    40.  
    41. return sum;
    42. }
    43.  
    44. int main()
    45. {
    46. while(scanf("%d%d",&n,&k)==2)
    47. {
    48. if(n==0 && k==0)
    49. break;
    50.  
    51. memset(check,-1,sizeof(check));
    52.  
    53. if(k==0)
    54. {
    55. printf("0\n");
    56. }
    57. else if(k==1)
    58. {
    59. printf("1\n");
    60. }
    61. else
    62. {
    63. printf("%lld\n",num_of_ways(n,k)%mod);
    64. }
    65. }
    66.  
    67. return 0;
    68. }