您的位置:首页 > 其它

高精

2016-04-30 14:03 295 查看
struct BigN{
#define maxlen (1005)
#define base (10000)
int len, A[maxlen];
BigN():len(1){A[0] = 0;}
BigN(const int x):len(1){A[0] = x;}
void operator *= (const int x){
int slid = 0, i;
for(i = 0;i < len;++i){
A[i] = A[i] * x + slid;
slid = A[i] / base;
A[i] %= base;
}
while(slid){
A[i] = slid;
slid = A[i] / base;
A[i++] %= base;
}
len = i;
}
void operator /= (const int x){
for(int i = len - 1;i;--i){
A[i-1] += A[i] % x * base;
A[i] /= x;
}
A[0] /= x;
while(len > 1 && !A[len - 1])--len;
}
bool operator <(const BigN &b){
if(len != b.len)return len < b.len;
int i = len - 1;
while((~i) && A[i] == b.A[i]) --i;
return A[i] < b.A[i];
}
void put(FILE *Fout){
int i = len - 1;
fprintf(Fout, "%d", A[i]);
while(i)
fprintf(Fout, "%04d", A[--i]);
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: