整数的阶乘一般非常大,例如24的阶乘long long 的数据类型也放不下,这时候我们应该用数组来模拟阶乘的过程,存储阶乘的结果。
下面以求24的阶乘为例,给出具体的代码:
#include<iostream>
#include<cstdio>
using namespace std;
int a[110];//定义数组来存储阶乘结果
int main(){
a[1]=1;//初始化
for(int i=1;i<=24;i++){
for(int j=1;j<100;j++){
a[j]*=i;//当前位乘i
a[j]+=a[j-1]/10;//当前位数上的总值等于低一位的进位加上该位乘i的结果
a[j-1]=a[j-1]%10;//前一位的值等于个位的值,高位都进给了下一位
}
}
for(int i=100;i>=1;i--)
printf("%d",a[i]);
}