输入N求N的阶乘的准确值。 Input 输入N(1 <= N <= 10000) Output 输出N的阶乘 Input示例 5 Output示例 120
坑点:
利用数组 不是一位一位的相乘
利用数组每次存多位数
#include<bits/stdc++.h> #define ll long long #define mod 100000000 using namespace std; ll a[100001]; ll b[100001]; int main(){ int n; cin>>n; memset(a,0,sizeof(a)); int l=0; a[0]=1; //memset(a,0,sizeof(a)); for(int j=1;j<=n;j++){ int k=0; for(int i=0;i<=l;i++){ a[i]=a[i]*j+k; k=a[i]/mod; a[i]%=mod; //cout<<a[i]<<endl; } if(k>0){ a[++l]=k; } } cout<<a[l]; for(int j=l-1;j>=0;j--){ printf("%.8lld", a[j]); } return 0; } //265252859812191058636308480000000