sponsored link

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

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

#include <stdio.h>

long int binomal(long int x, long int y){
	long int n = x - y + 1; //xの階乗の止める場所
	for(int i = x-1; i >= n; --i){
		x = x*i;
	}
	
	for(int o = y-1; o >= 1; o--){
		y = y*o;
	}
	
	long int result = 0; 
	
	result = x/y;
	
	return result;
}

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

	long int result = 0; 
	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 とか使ってみてください。

コメント