Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
173610 B班-雷宸希 高精度阶乘 C++ 无测评数据 0 0 MS 0 KB 932 2024-08-20 22:05:44

Tests(0/0):


#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; }