买水果
时间限制:
1000 ms | 内存限制:
65535 KB
难度:
0
-
描述
-
今天zz突然想吃水果了,然后他到超市去买水果,现超市有n个不同的水果,zz要买m个水果
(m<=n);那么zz有多少种买水果的方式??
-
输入
-
输入T组数据(T<=100)
然后输入T行,每行输入两个数n,m(0< n < 2^31);
输出
- 每一行输出一个数(保证在0~2^31); 样例输入
-
2 4 2 3 3
样例输出
-
6 1
-
//排列组合 学会了一种优化算法 AC
-
//利用边算能约分的约分掉
-
#include <iostream> using namespace std; int main(){ int t; long long re; int i,b,n,m; cin>>t; while(t--){ cin>>n>>m; re=1; if(m>n-m) m=n-m; b=m; for(i=n;i>=n-m+1;i--){ re*=i; while(re%b==0&&b>1){ re/=b; b--; } } cout<<re<<endl; } return 0; }
//自己以前的代码只会判断m>n-m时m=n-m; 所以会溢出
-
输入T组数据(T<=100)