C++阶乘函数问题,因数据太大无法处理,比如10000!如何求解?

来源:百度知道 编辑:UC知道 时间:2024/05/21 20:25:34

用数组,分段存放,有点像逻辑电路里面加法器的思路。这是我们去年的课程设计题目,下面是代码
#include<iostream>
#include<string>

using namespace std;

const int Max=1000;

class BigNum
{
public:
BigNum(int a)
{
int i,j=0;
for(i=0;i<Max;i++)
theNum[i]=0;

while(a){
theNum[j]=a%10;
a=a/10;
j++;
}

}
BigNum operator * (const BigNum &x){
BigNum result(0);

for(int i=0;i<Max;i++)
{
BigNum temp(0);
if(!x.theNum[i]) continue;
for(int j=0;j<x.theNum[i];j++)
temp=temp+*this;

result=result+(temp<<i);
}
return result;
}
BigNum operator<<(int x){
for(int i=Max-1;i>Max-1-x;i--)
if(theNum[i]){
cerr<<"error!