666: Put the Apples
- View
- Submit
- Statistics
- Questions
-
Total time limit:
-
1000ms
-
Memory Limit:
-
65536kB
-
Describe
-
Put m the same apples on n the same plate, allow some plates to be empty, ask how many different ways? (denoted by k) 5,1,1 and 1,5,1 are the same kind of sub-method.
-
Input
-
The first line is the number of test data t (0 <= T <= 20). Each of the following lines contains two integers m and n, separated by a space. 1<=m,n<=10.
-
Output
-
For each set of data entered M and N, the corresponding k is output in one line.
-
Sample input
-
17 3
-
Sample output
-
8
-
Source
-
[email protected]
#include <cstdio>using namespacestd;inta[ One][ One],n,m,t;voidinit () {/*Problem-Solving analysis: Set F (m,n) for M apples, n plates of the number of methods, then the first discussion of N, when n>m: there must be n-m a plate forever empty, remove them on the number of apples to be placed no effect. That is, if (n>m) f (m,n) = f (m,m) when n<=m: Different methods can be divided into two categories: 1, there is at least one plate empty, that is equivalent to f (m,n) = f (m,n-1); 2. All plates have apples, which is equivalent to taking an apple from each plate, without affecting the number of different methods, i.e. f (m,n) = f (m-n,n). The total number of put apples is equal to the sum of the two, that is F (m,n) =f (m,n-1) +f (m-n,n)*/ //A[i][j] means I put an apple on a J-plate. for(intI=1; i<=Ten; i++) a[0][i]=1, a[i][1]=1; for(intI=1;i< One; i++) for(intj=2; j<= One; j + +) if(i>=j) A[i][j]=a[i][j-1]+a[i-J] [j]; ElseA[i][j]=a[i][j-1];}intMain () {init (); scanf ("%d",&t); while(t--) {scanf ("%d%d",&n,&m); printf ("%d\n", A[n][m]); } return 0;}
666: Put the Apples