基准时间限制:1 秒 空间限制:131072 KB 分值: 0
难度:基础题
输入N求N的阶乘的10进制表示的长度。例如6! = 720,长度为3。
Input
输入N(1 <= N <= 10^6)
Output
输出N的阶乘的长度
Input示例
6
Output示例
3
#include<iostream>
#include<cstdio>
using namespace std;
long long a[1000005];
int main()
{
int n;
cin>>n;
a[0]=1;//初始化为1
int m=0;
for(int i=1;i<=n;i++)//i就是阶乘过程中的元素
{
int c=0;//进位每次更新为0
for(int j=0;j<=m;j++)
{
a[j]=a[j]*i+c;//每次相乘
c=a[j]/10000000;//判断是否需要进位 (最好弄得大点,第一次用的10错了)
a[j]%=10000000;
}
if(c>0)//进位大于0的话
{
m++;//位数增加,m的作用就是记录位数
a[m]=c;//
}
}
cout<<a[m];
for(int i=m-1;i>=0;i--)
{
printf("%0.7lld",a[i]);//按位输出
}
cout<<endl;
return 0;
}