读书人

求C(N, M)即求M个数中选N个数的组合

发布时间: 2012-03-26 15:46:56 作者: rapoo

求C(N, M),即求M个数中选N个数的组合方案数
源代码是这样的,哪里错啦,怎么输不出正解啊??求指点。

#include<iostream>
using namespace std;
int main()
{
int n,i;
long int a,b,sub,sum;
cin>>n;
while(n--)
{
cin>>a>>b;//N=a,M=b
for(i=0;i<a-1;i++)
a*=(a-1);
for(i=0;i<b-1;i++)
b*=(b-1);
sub=b-a;
for(i=0;i<sub-1;i++)
sub*=(sub-1);
sum=b/(a*sub);
cout<<sum<<endl;
}
return 0;
}

[解决办法]
#include<iostream>
using namespace std;
int main()
{
int n,i;
long int a,b,sub,sum;
cin>>n;
while(n--)
{
cin>>a>>b;//N=a,M=b
int a1 = a, b1 = b;
for(i=a-1;i>0;i--)
a1*=i;
for(i=b-1;i>0;i--)
b1*=i;
sub=b-a;
for(i=sub-1;i>0;i--)
sub*=i;
sum=b1/(a1*sub);
cout<<sum<<endl;
}
return 0;
}
[解决办法]

C/C++ code
#include <iostream>using namespace std;int main(){    int n,i;    long int a,b,sum;    cin>>n;    while(n--)    {        cin>>a>>b;//N=a,M=b        sum = 1;        for(i = b; i >= b - a; --i)            sum *= i;        cout<<sum<<endl;    }    getchar();    return 0;} 

读书人网 >C++

热点推荐