对于我这个初学者来说,对于大数据的处理还是蛮头大的,而此文主要给出了阶乘下的大数据的乘法,分享给大家。。。。。 #include<iostream> #include<iomanip> #define MAX 201 #define BASE 10000 //数字中每个元素保存4位(即基) using namespace std; int f[MAX][MAX]; //第一个维度保存序号,第二个维度该序号下的阶乘值 void multiply(int a[], int b) //大数乘法处理,单语句操作,意会其过程 { int carry = 0; for (int len = MAX - 1; len >= 0; len--) { carry += a[len] * b; a[len] = carry%BASE; carry /= BASE; } } int factorial(int n,int i) //阶乘 { memset(f, 0, sizeof(int)*MAX*MAX); f[i][MAX - 1] = n; for (int j = n-1; j > 0; j--) { multiply(f[i], j); } return 0; } int main() { int m, i,j; while (cin >> j>>m) { factorial(m, j); for (i = 0; i < MAX; i++) //找到第一个非零的开始打印 { if (f[j][i]!= 0) break; } if (i < MAX) //打印的方法,应当注意中间位数不足4位时 { cout << f[j][i++]; for (; i < MAX; i++) { if (f[j][i] < 10000) cout << setw(4) << setfill('0') << f[j][i]; else cout << f[j][i]; } cout << endl; } } return 0; } </iomanip></iostream>