链接:https://www.nowcoder.com/acm/contest/75/E
来源:牛客网
题目描述
给定一个整数N(0≤N≤10000),求取N的阶乘
输入描述:
多个测试数据,每个测试数据输入一个数N
输出描述:
每组用一行输出N的阶乘
示例1
输入
1 2 3
输出
1 2 6
#include<stdio.h> #include<string.h> int a[50000]; int main() { int n; while( ~scanf("%d",&n)){ memset( a, 0, sizeof(a)); a[0]=1; a[1]=1; for(int i=1;i<=n;i++){ for(int j=1;j<=a[0];j++) a[j]=a[j]*i; int j; for(j=1;j<=a[0];j++){ a[j+1]=a[j+1]+a[j]/10; a[j]=a[j]%10; } while(a[j]>0){ a[j+1]+=a[j]/10; a[j] %=10; j++; a[0]++; } } for(int i=a[0];i>0;i--) printf("%d",a[i]); printf("\n"); } return 0; }
用数组存每一位,进位前一位加即可。