函数接口定义:
void Print_Factorial ( const int N );
其中
N
是用户传入的参数,其值不超过1000。如果N
是非负整数,则该函数必须在一行中打印出N
!的值,否则打印“Invalid input”。裁判测试程序样例:
#include <stdio.h> void Print_Factorial ( const int N ); int main() { int N; scanf("%d", &N); Print_Factorial(N); return 0; } /* 你的代码将被嵌在这里 */
输入样例:
15
输出样例:
1307674368000
code:
void Print_Factorial ( const int N ){
int i,m,JW=0,j,Is=0; //i位数;m各位乘积加上进位数;JW 进位数;j从1到N循环
int a[2600]={1};
if(N>=0) {
for(j=1;j<=N;j++){
for(i=0;i<2600;i++){
m=a[i]*j+JW;
a[i]=m%10;
JW=m/10;
}
}
for(i=2599;i>=0;i--){
if(a[i]) Is=1;
if(Is) printf("%d",a[i]);
}
}else{
printf("Invalid input");
}
}
总结
按常规方法,阶乘N!肯定超出整形变量的范围了,只有想别的办法:把数字放到数组中,每个数字做乘法,把个位留下,把十位以上的放入下一位。