求解,该怎么写这个代码

img

代码如下:

#include <iostream>
using namespace std;
long long pq(int n)
{
    if (n==0 || n==1)
        return 1;
    else
        return n*pq(n-1);
}
int main()
{
    int m,n;
    cout << "请输入m和n(m>=n>=0)";
    while (1)
    {
        cin >> m>>n;
        if( m>=n && n>=0)
            break;
        else
            cout << "输入不合法,请重新输入:";
    }
    long long s1 = pq(m); //计算m的阶乘
    long long s2 = pq(n); //计算n的阶乘
    long long s3 = pq(m-n);
    cout << s1/(s2*s3);
    return 0;
}

#include <stdio.h>
double pq(int n)
{
    double s = 1;
    for(int i=1;i<=n;i++)
        s*=i;
    return s;
}
int main()
{
    int m,n;
    scanf("%d%d",&m,&n);
    if(m<0 || n<0 || m<n)
   {
        printf("输入错误 ");
        return 0;
   }
    printf("%.lf",pq(n)/(pq(m)*(pq(n-m));
    return 0;
}