#include<bits/stdc++.h>
using namespace std;
const int MAXN=100;//实际可存位数=MAXN*4
struct bignum
{
int num[MAXN],op;
//op用来表示符号 num[0]用来保存数字位数,10000进制 节省空间和时间。
/***********赋值号及初始化***********/
bignum & operator = (const char* c)//用字符数组赋值
{
memset(num,0,sizeof(num));
int n,j=1,k=1;
n=strlen(c);
for (int i=1;i<=n;i++)
{
if (k==10000) j++,k=1;//10000进制,4个数字才算1位。
if(c[n-i]=='-'&&i==n)op=-1;
else num[j]+=k*(c[n-i]-'0');
k*=10;
}
num[0]=j;
return *this;
}
bignum & operator = (int a)//用整型赋值
{
char s[MAXN*4];
sprintf(s,"%d",a);
return *this=s;
}
bignum(){memset(num,0,sizeof(num));num[0]=1;op=1;} // 目的:声明bignum时无需显式初始化。
bignum(int n){*this = n;} // 目的:支持“bignum a=1;”之类的代码。
bignum(char *c){*this=c;}//用字符数组初始化
void clear(){bignum a;*this=a;}//显性初始化
/***********各种比较符号**********/
bool operator > (const bignum &b) const
{
if(op>b.op)return 1;
if(op<b.op)return 0;
if(op>0)//均为正数
{
if (num[0]!=b.num[0]) return num[0]>b.num[0];
for (int i=num[0];i>=1;i--)
if (n
CCF 1141.高精度除法(c/c++)
最新推荐文章于 2024-02-19 15:44:05 发布