大數階乘

點擊打開鏈接http://acm.nyist.net/JudgeOnline/problem.php?pid=28

大數乘法之模擬手工算法

模擬手工算法很有意思,就是一步一步往下乘,當然要做個很大的數組,數組最好定義爲整體變量,用手工的算法算出來..

編碼如下:

#include <iostream>
using namespace std;

int a[100000];

int main()
{
	int m;
	cin >> m;
	a[1] = 1;
	int n=0, p =1;  // n 表示進位, p 表示位數 
	for(int i=2; i<=m; ++i){  // 小於 m 的每個數 
		
		int j;
		n = 0;    
		for( j=1; j<=p; ++j){
			a[j] = a[j]*i + n;   // +n : 表示加上前一位數的進位 
			n = a[j]/10;
			a[j] = a[j]%10;
		}
		
		while(n){         // 有進位時 
			a[j] = n%10;
			n = n/10;
			++j; 
		}
		p = j-1;
	}	
	for(int i = p; i>0; --i){   //倒序輸出 
		cout << a[i];
	}
	cout << endl;
	return 0;
}


發佈了23 篇原創文章 · 獲贊 9 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章