?
?
????????? N!
Time Limit: 10000/5000 MS (Java/Others)????Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 34687????Accepted Submission(s): 9711
?
?
?
?
?
其核心思想就是把計算結果每一位上的數字保存到一個數組成員中,例如:
把124保存至數組中,保存結果應該是result[0] =4;result[1] =2;result[2] =1
把整個數組看成一個數字,這個數字和一個數相乘的時候,需要每一位都和這個乘數進行相乘運算還需要把前一位的進位加上。
寫法如下:int 結果 = result[x] * 乘數 + 進位;
每一位的計算結果有了,把這個結果的個位數拿出來放到這個數組元素上:result[x] = 結果%10;
接下來的工作就是計算出進位:進位 = 結果 / 10;
這樣一位一位的把整個數組計算一遍,最后可能還有進位,用同樣的方法,把進位的數值拆成單個數字,放到相應的數組元素中。最后從后往前輸出結果。
?
?
#include<iostream> #define MAX 100000 using namespace std; int main() {int n,a[MAX];int i,j,k,count,temp;while(cin>>n){a[0]=1;count=1;for(i=1;i<=n;i++){k=0;for(j=0;j<count;j++){temp=a[j]*i+k;a[j]=temp%10;k=temp/10; }while(k)//記錄進位 {a[count++]=k%10;k/=10;}}for(j=MAX-1;j>=0;j--) if(a[j])break;//忽略前導0for(i=count-1;i>=0;i--)cout<<a[i];cout<<endl;}return 0; }
?
?