2018-02-03 還好寫過大整數運算,順利地一編A過。(這道題就是一道大整數乘法的實現代碼) 簡單的說一下吧。大整數運算的思想就是用數組儲存數字,並且依靠數組進行進位的模擬。 當然這個用的是每1個存儲一格,要想優化時間的話可以考慮每4個存儲一格。 ...
2018-02-03
還好寫過大整數運算,順利地一編A過。(這道題就是一道大整數乘法的實現代碼)
簡單的說一下吧。大整數運算的思想就是用數組儲存數字,並且依靠數組進行進位的模擬。
當然這個用的是每1個存儲一格,要想優化時間的話可以考慮每4個存儲一格。
#include <stdio.h> #include <string.h> #include <math.h> #include <algorithm> #include <queue> #include <stack> using namespace std; int a[37000],k; void chengfa(int n) { int j,i,temp,carry; a[0]=1;k=1; for(i=2;i<=n;i++) { carry=0; for(j=0;j<k;j++) a[j]*=i; for(j=0;j<k;j++) { temp=carry+a[j]; a[j]=temp%10; carry=temp/10; } while(carry) { a[k++]=carry%10; carry/=10; } } } int main() { int n,flag; while(~scanf("%d",&n)) { memset(a,0,sizeof(a)); chengfa(n); flag=0; for(int i=k-1; i>=0; i--) { if(a[i]!=0||flag==1) { printf("%d",a[i]); flag=1; } } printf("\n"); } }