質問: c言語のmまたはnが13以上となる場合に正しい解を求めることができない、なぜなら、13の階乗は6,227,020,800であり、この値はint型変数で扱うことのできる範囲をこえてしまっているからである。以下のプログラムを改
回答: fn が、int を返す関数であるのなら無理だと思いますが。 表示も含めた一般的な手法だと、 1から始めて、5の倍数時(当然それまでに2の倍数が発生するので) 10 で割って 0 の個数を数えて最後にその数の 0 を付加するとか、 大きな数値が表現できる型を作って、それで計算させるとか では無いでしょうか。 面倒なので、サンプル作る気にはなれませんが、 どちらにしても、どこを変えていいか、どの程度の大きさを想定するのか の方針がわからないと、答えづらいと思います。 fn が、int を返す関数であるのがデフォルトなら、 どのみち範囲を超えるので無理だと思います。