'commit'
This commit is contained in:
30
C++专题课程/基础知识/高精度阶乘.cpp
Normal file
30
C++专题课程/基础知识/高精度阶乘.cpp
Normal file
@@ -0,0 +1,30 @@
|
||||
#include<bits/stdc++.h>
|
||||
using namespace std;
|
||||
int main() {
|
||||
long i,j, n,len=0,p;
|
||||
long a[10000]= {0};
|
||||
a[0]=1;
|
||||
scanf("%ld",&n);
|
||||
//һ<><D2BB><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><C4B3><EFBFBD><EFBFBD><EFBFBD>
|
||||
for(i=1; i<=n; i++) {
|
||||
//ÿһλ<D2BB><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i
|
||||
for(j=0; j<=len; j++)
|
||||
a[j]*=i;
|
||||
p=0;
|
||||
//<2F><><EFBFBD><EFBFBD>ÿһλ
|
||||
while(p<=len) {
|
||||
//ÿ<>ν<EFBFBD>һλ
|
||||
if(a[len]>9) {
|
||||
len++;
|
||||
}
|
||||
a[p+1]+=a[p]/10;//ȡ<><C8A1><EFBFBD><EFBFBD>λ
|
||||
a[p]=a[p]%10; //ȡ<>ౣ<EFBFBD><E0B1A3>
|
||||
p++;
|
||||
}
|
||||
}
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
for(i=len; i>=0; i--)
|
||||
printf("%ld",a[i]);
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user