题目1076:N的阶乘
时间限制:3 秒
内存限制:128 兆
特殊判题:否
提交:3548
解决:1096
-
题目描述:
-
输入一个正整数N,输出N的阶乘。
-
输入:
-
正整数N(0<=N<=1000)
-
输出:
-
输入可能包括多组数据,对于每一组输入数据,输出N的阶乘
-
样例输入:
-
4 5 15
-
样例输出:
-
24 120 1307674368000
//N的阶乘 #include<stdio.h> #include<stdlib.h> #include<string.h> int arr[2600]; int main() { int N; while(scanf("%d",&N)!=EOF) { int i,j,len=1; memset(arr,0,sizeof(arr)); arr[0] = 1; for(j=2;j<=N;j++) { int m=0,c; for(i=0;i<len;i++) { c = arr[i]*j+m; arr[i] = c%10; m = c/10; } while(m!=0)//高位溢出 { arr[i++]=m%10; m/=10; } len = i; } //忽略前0 for(i=2599;i>=0;i--) { if(arr[i]!=0) break; } //打印 for(j=i;j>=0;j--) printf("%d",arr[j]); printf("\n"); } return 0; } //大数用数组 //1000!~2600位 //回车换行 //不考虑乘以1的循环 //scanf返回值 //重点 不对2600内循环 大于数长往上进**