链接:https://www.nowcoder.net/acm/contest/75/E
来源:牛客网
时间限制:C/C++ 3秒,其他语言6秒
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld
题目描述
给定一个整数N(0≤N≤10000),求取N的阶乘
输入描述:
多个测试数据,每个测试数据输入一个数N
输出描述:
每组用一行输出N的阶乘
示例1
输入
1
2
3
输出
1
2
6
解题思路:
用数组模拟阶乘运算过程,注意进位。
#include<stdio.h>
#include<string.h>
int str[4000000];
int main()
{
int n,i,j;
while (scanf("%d",&n)!=EOF)
{
if(n==0)
printf("0\n");
else
{
int flag=1; //位数
int carry=0;//进位
int res=0;
str[0]=1;
for (i=2;i<=n;i++)
{
for (j=1;j<=flag;j++)
{
res=str[j-1]*i+carry;
str[j-1]=res%10;
carry=res/10;
}
while (carry)
{
flag++;
str[flag-1]=carry%10;
carry/=10;
}
}
for (i=flag-1;i>=0;i--)
{
printf("%d",str[i]);
}
printf("\n");
}
}
return 0;
}