4-10階乗計算アップグレード版
この問題では、非負の整数乗算を印刷する関数を実現する必要があります.
関数インタフェースの定義:
void Print_Factorial ( const int N ); ここで、Nはユーザが入力したパラメータであり、その値は1000を超えない.Nが負の整数でない場合、この関数は1行にNを印刷する必要があります.を選択します.審判試験プログラムのサンプル:
入力サンプル:15出力サンプル:1307674368000解答プログラム:
関数インタフェースの定義:
void Print_Factorial ( const int N ); ここで、Nはユーザが入力したパラメータであり、その値は1000を超えない.Nが負の整数でない場合、この関数は1行にNを印刷する必要があります.を選択します.審判試験プログラムのサンプル:
#include <stdio.h>
void Print_Factorial ( const int N );
int main()
{
int N;
scanf("%d", &N);
Print_Factorial(N);
return 0;
}
/* */
入力サンプル:15出力サンプル:1307674368000解答プログラム:
void Print_Factorial ( const int N )
{
if(N>0&&N<=12)
{
int i;
long int M=1;
for(i=2;i<=N;i++)
{
M=M*i;
}
printf("%ld
",M);
}
else if(N>12&&N<=1000)
{
int Num[3001]={0};
int i,j,k,n;
k=1;
n=0;
Num[0]=1;
int temp;
for(i=2;i<=N;i++)
{
for(j=0;j<k;j++)
{
temp=Num[j]*i+n;
Num[j]=temp%10;
n=temp/10;
}
while(n!=0)
{
Num[k]=n%10;
k++;
n=n/10;
}
}
for(i=k-1;i>=0;i--)
{
printf("%d",Num[i]);
}
}
else if(N==0)
printf("1
");
else
printf("Invalid input
");
}