标签:size for str 乘法 数组 pre max 计算 src
当求阶乘的数太大的时候,结果用int
甚至long
无法保存,可以用一个大数组来保存结果,运算的方法和笔算乘法类似。比如456 * 6
的运算步骤如下:
#include <iostream>
using namespace std;
#define maxsize 4000
int main(){
int num[maxsize] = {0};
int carry, t, n;// t用于记录当前结果的位数,carry为进位
num[0] = 1;
int ca;
while(cin >> n){
t = 0;
num[0] = 1;
for(int i = 1; i <= n; i++){// 计算阶乘,从1开始乘到n
carry = 0;//
for(int j = 0; j <= t; j++){// 对于每个结果的每一位
ca = (num[j] * i + carry) / 10;// 计算出这一位乘以i的进位
num[j] = (num[j] * i + carry) % 10;要保存在这一位的结果
carry = ca;
}
while(carry != 0){// 每一个数如果carry!=0就说明要向上一位进位
num[++t] = carry % 10;
carry = carry / 10;
}
}
for(int i = t; i >= 0; i--)// 输出结果
cout << num[i];
cout << endl;
}
return 0;
}
标签:size for str 乘法 数组 pre max 计算 src
原文地址:https://www.cnblogs.com/zhuobo/p/10293665.html