提交时间:2024-08-20 22:05:44

运行 ID: 173610

#include<bits/stdc++.h> using namespace std; //总体方法介绍:main函数内,算出1!后加入答案数组,再在1!基础上*2,再相加,以此类推 long long a[100000]={0,1,0},len=1,ans[10000000]={0},len2=1000000;//a:每个阶乘 len:阶乘长度 ans:最终答案 len2:答案长度 void jc(int a1){ int g=0;//进位 for(long long i=1;i<=len+1000;i++){//len+1000:以防多位进位,例 g=1023 int s=a1*a[i]+g;//a1是阶乘乘的数 a[i]=s%10; g=s/10;//进位 } for(int i=len+10;i>=len;i--){//时刻计算阶乘长度 if(a[i]!=0){ len=i; } } } void shu_chu(){ for(;;len2--){//建议用while循环,这里用了非定义非判断无限循环for if(ans[len2]!=0){//不等于0退出 break; } } for(int j=len2;j>=1;j--){//倒序输出 cout<<ans[j]; } } int main() { int a; cin>>a; jc(a);//阶乘 shu_chu(); //输出 return 0; }