「50桁用のプログラムつくれ」だから、この場合実行しなくてもいいので。
それで、一応ロングなら。
#include <stdio.h>

/* mからnまでの積を再帰的に計算する関数 (m<=n) */
long int factorial (int m, int n) {
if (m == n)
  return m;
else
  return m * factorial(m + 1, n);
}
/* nCr=n(n-1)(n-2)・・・(n-r+1)/r!*/
int main(void){
  int m=0, n=0;
  long int a, b;

  printf("Enter M N:");
  scanf("%d%d",&m,&n);
  a = factorial(m-n+1, m); b = factorial(1,n);
  printf("%dC%d=%ld/%ld=%ld", m, n, a, b, a/b);
  puts(""); n = m - n;
  a = factorial(m-n+1, m); b = factorial(1,n);
  printf("%dC%d=%ld/%ld=%ld", m, n, a, b, a/b);
}