C/C++的数字表示范围拥有上限,如果想要表示100!这种大数必须使用数组来表示。数组表示大数的原理是手写加法/乘法,模拟手算进行进位。
- 模板
vector<int> a(100,0);
void merge(){
//初始化num为结果
vector<long long int> num(100,0);
num[0]=1;
//初始化有效长度为1
int length=1;
//初始化进位
int carry=0;
//大数累乘
for(int i=0;i<a.size();i++){
for(int j=0;j<length;j++){
long long int temp=num[j]*a[i]+carry;
//本位的数字
num[j]=temp%10;
//下一位的进位
carry=temp/10;
//判断下一位是否进位
if(carry>0&&j==length-1) length++;
}
}
for(int i=length-1;i>=0;i--){
//从高位到低位输出
cout<<num[i];
}
}
int main(){
for(int i=0;i<100;i++){
a[i]=i+1;
}
merge();
}