利用函数调用 和多文件结构

img


#include <iostream>
using namespace std;
long long jc(int n)
{
    long long s=1;
    int i ;
    for (i=1;i<=n;i++)
    {
        s*=i;
    }
    return s;
}
long long Cnm(int n,int m)
{
    return jc(n)/jc(m)/jc(n-m);
}

int main()
{
    int n,i;
    long long s1,s2=0,t;
    cin >> n;
    //scanf("%d",&n);
    s1 = Cnm(2*n,n);
    for(i=1;i<=n;i++)
    {
        t = Cnm(n,i);
        s2 += t*t;
    }
    if(s1==s2)
        cout << "Yes";//printf("yes");
    else
        cout<< "No";//printf("no");
    return 0;
}

先求C(n,2n)
再求C(0,n)^2+C(1,n)^2+……+C(n,n)^2
再进行比较


#include <iostream>

using namespace std;

unsigned long long Cnm(unsigned int n,unsigned int m)
{
    if(m==n||m==0)
        return(1);
    else
        return(Cnm(n-1,m-1)+Cnm(n-1,m));
} 

int main()
{
    unsigned int n=1,i=1;
    unsigned long long s1,s2=0,t;
    cin>>n;
    s1 = Cnm(2*n,n)-1;
    for(i=1;i<=n;i++)
    {
        t = Cnm(n,i);
        s2 += t*t;
    }
    cout<<s1<<endl;
    cout<<s2<<endl;
    if(s1==s2)
        cout<<"yes";
    else
        cout<<"no";
    return 0;
}

这个 C(2n,n)该怎么理解啊,是从2n个数中取n个数的组合吗?