【题目描述】
求10000以内n的阶乘。
【输入】
只有一行输入,整数n(0≤n≤10000)。
【输出】
一行,即n!的值。
【输入样例】
4
【输出样例】
24
从一开始依次乘,然后记录一下,再输出,代码:
#include<bits/stdc++.h>
using namespace std;
int n,m,h;
int a[100000]={0};
int sum;
int read()//读入优化
{
int x = 0, f = 1; char ch = getchar();
while (!isdigit(ch)) { if (ch == '-') f = -1; ch = getchar(); }
while (isdigit(ch)) { x = x * 10 + ch - '0'; ch = getchar(); }
return x * f;
}
int main()
{
n=read();
int sum=1;
a[0]=1;
for(int i=1;i<=n;i++)
{
int jw=0;
for(int j=0;j<sum;j++)
{
int h=a[j]*i+jw;//高精乘
a[j]=h%10;
jw=h/10;
}
while(jw)
{
a[sum++]=jw%10;//处理向前多几位
jw/=10;
}
}
for(int i=sum-1;i>=0;i--)
{
cout<<a[i];
}
}