题解 | N的阶乘
N的阶乘
https://www.nowcoder.com/practice/f54d8e6de61e4efb8cce3eebfd0e0daa?tpId=40&tqId=21355&rp=1&difficulty=&judgeStatus=&tags=/question-ranking
#include <iostream> using namespace std; void bigNumMul(int n){ int i,j,k,rear=1,m,count=0; long long result[512]={0},temp,d; k=n; while (k != 0){ k=k/10; count++; } d=0; result[1]=1; m=(n*count)/8 + 1; for(i=2;i<=n;i++){ for(j=1;j<=m;j++){ temp = result[j]*i + d; result[j] = temp % 100000000; d = temp / 100000000; // 不能用result[j] 已经改变值 } } for(i=m;i>=1;i--){ if(result[i] != 0){ rear = i; break; } } cout<<result[rear]; // 8位以下,不用补零。只用输出数组第一个数据 for(i=rear-1;i>=1;i--){ if(result[i]>9999999){ cout<<result[i]; continue; } if(result[i]>999999){ cout<<"0"<<result[i]; continue; } if(result[i]>99999){ cout<<"00"<<result[i]; continue; } if(result[i]>9999){ cout<<"000"<<result[i]; continue; } if(result[i]>999){ cout<<"0000"<<result[i]; continue; } if(result[i]>99){ cout<<"00000"<<result[i]; continue; } if(result[i]>9){ cout<<"000000"<<result[i]; continue; } cout<<"0000000"<<result[i]; } } int main(){ int n; while(cin>>n){ bigNumMul(n); cout<<endl; } return 0; }#牛客创作赏金赛##复试练习#
2025考研复试 文章被收录于专栏
复试ing,努力中。。。