A Wonderful Concert | ||||||
| ||||||
Description | ||||||
Recently ,a famous singer will come to our school ,and he is going to host a concert in the assembly hall .Because of the high popularity of this singer ,many student have great willing to come to this concert. As you know , this concert’s ticket price is 50 yuan .Some day ,there are m students who only have 50 yuan and n students who only have 100 yuan coming to buy ticket . But a horrible thing happened ,the ticket seller don’t have any change . Now , this is your show time .Please tell the ticket seller the kind of queuing ways that all people can buy ticket without problem .Obviously ,everyone can only buy one ticket . | ||||||
Input | ||||||
The input file contains multiple test cases. For each test case: it contains two integer m and n . You should proceed to the end of file. Hint: 1 <= n <= m <= 1000 | ||||||
Output | ||||||
For each test case, output the total ways.Because this number may be too large ,you just output the values mod 1000000007. | ||||||
Sample Input | ||||||
1 1 2 1 2 2 | ||||||
Sample Output | ||||||
1 2 2 | ||||||
Source | ||||||
CPC23 2014-6 | ||||||
Author | ||||||
Zhou Ben |
#include <stdio.h>
#define INF 0x3f3f3f3f
#define MOD 1000000007
#define bug1 cout <<"bug1"<<endl
#define bug2 cout <<"bug2"<<endl
#define bug3 cout <<"bug3"<<endl
using namespace std;
typedef long long ll;
const int MAX_N=1e3+3;
int dp[MAX_N][MAX_N];
void fun(){
for(int i=1;i<=1000;i++) dp[i][1]=i;
for(int j=1;j<=1000;j++) dp[1][j]=0;
dp[1][1]=1;
for(int i=2;i<=1000;i++){
for(int j=2;j<=i;j++) dp[i][j]=(dp[i-1][j]%MOD+dp[i][j-1]%MOD)%MOD;
}
}
int main(void){
fun();
int n,m;
/*for(int i=1;i<=10;i++){
for(int j=1;j<=10;j++) printf("%5d ",dp[i][j]);
puts("");
}*/
while(~scanf("%d%d",&m,&n)){
cout << dp[m][n]<<endl;
}
}
//freopen("input.txt", "r", stdin); freopen("output.txt", "w", stdout);