描述
求10000以内n的阶乘。
格式
输入格式
只有一行输入,整数n(0≤n≤10000)。
输出格式
一行,即n!的值。
样例
输入样例
4
输出样例
24
限制
时间限制: 10000 ms
内存限制: 65536 KB
大数需要手动模拟运算
#include<stdio.h>
#include<iostream>
#include<string.h>
#include<algorithm>
using namespace std;
int main()
{
int n;
int arr[50000];
//int sum[50000];
int high_sum=1;
int high_arr=1;
memset(arr,0,sizeof(arr));
// memset(sum,0,sizeof(sum));
arr[0]=1;
cin>>n;
for(int i=1; i<=n; i++)
{
//乘法
for(int j=0; j<high_arr; j++)
{
arr[j]*=i;
}
//进行进位
int jinwei=0;
for(int j=0; j<high_arr; j++)
{
arr[j]+=jinwei;
jinwei=arr[j]/10;
arr[j]%=10;
}
while(jinwei!=0)
{
arr[high_arr++]=jinwei%10;
jinwei/=10;;
}
/*
//进行和
for(int j=0; j<high_arr; j++)
{
sum[j]+=arr[j];
}
//进位
jinwei=0;
high_sum=high_arr>high_sum?high_arr:high_sum;
for(int j=0; j<high_sum; j++)
{
sum[j]+=jinwei;
jinwei=sum[j]/10;
sum[j]%=10;
}
while(jinwei!=0)
{
sum[high_sum++]=jinwei/10;
jinwei/=10;
}*/
}
for(int i=high_arr-1; i>=0; i--)cout<<arr[i];
return 0;
}