【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 とか使ってみてください。