タイトルには次のような問題があります。Nの値ごとに、N!たとえば、n = 32000の場合、私は130271を取得する必要があります。 私は再帰的なソリューションについて考えました。それはより小さい数字のために働いていますが、上記の例では31997が出力されます。私は思考が間違っていると確信していますが、実際には大きな数字の規則を見つけることはできません。どこか、n!ステップをスキップし始めると思います。つまり、数字では増加しませんが、2つまたは3つで増加します。 私は、次のコードを持って:あなたは何をやっているNの各値について、N階乗で何桁の数字が表示されるのですか
#include <stdio.h>
#include <stdlib.h>
//For each value of N, print out how many digits are in N!.
int how_many(int n){
if(n <= 3)
return 1;
if(n == 4)
return 2;
if(n == 5 || n == 6)
return 3;
if(n >= 7)
return 1 + how_many(n-1);
}
int main()
{
int n;
printf("The number n is : ");
scanf("%d", &n);
int counter = 0;
counter = how_many(n);
printf("n! has %d digits", counter);
return 0;
}
標準ライブラリから 'lgamma'を使うだけでいいです。 – rici