【C言語】コンビネーション(mCn)の計算

この間 C言語 初心者の友人に質問を受けて単純なコンビネーションの計算のコードを書いたのでそのコードを載せておきます。

#include <stdio.h>

long int binomal(long int x, long int y){
long int n = x - y + 1; //xの階乗の止める場所
long int result = 0; //結果保存用変数

for(int i = x-1; i >= n; --i){
x = x*i;
}

for(int o = y-1; o >= 1; o--){
y = y*o;
}

result = x/y;

return result;
}

int main(void) {
long int input1 = 1;
long int input2 = 1;
long int result = 0; 

printf("一つ目の数字を入力してください:");
scanf("%ld", &input1);
printf("二つ目の数字を入力してください:");
scanf("%ld", &input2);

result = binomal(input1,input2);

printf("%ld C %ld = %ld \n",input1,input2,result);
}

変数の型を long int にしているのは、桁数が大きくなるためです。 現在はだいたい long int にしておくと 8バイト の数字を扱えますが、OSやPCのシステム、Cのコンパイラによっては 4バイト の時があるみたいです。

そういうときは long long int とか使ってみてください。