組み合わせ計算で 64C32 の結果がオーバーフロー
行いたいこと
組み合わせの式 64C32 の結果の下9桁を出力するプログラムをC言語で書きたい
試したこと
以下のようなコードで実行を試みたが、オーバーフローが生じてしまう
#include<stdio.h>
#define ll long long
ll combi(ll n, ll r){
if (r == 0) {
return 1;
}
return (n - r + 1) * combi(n, r - 1) / r;
}
int main(){
printf("%09lld\n",combi(64 ,32 ) );
return 0;
}
解答は 942590534 なのですが、-275878929539273115 のような結果になってしまいます。
どのようにコードを書けばいいでしょうか。