#include <cstring>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <cstdlib>
#include <vector>
#include <iostream>
#define lson rt<<1
#define rson rt<<1|1
using namespace std;
typedef long long ll;
typedef pair<int, int> P;
const int maxn=2e2+10;
struct dashu
{
int s[maxn*5];
int flag,len;
void ini()
{
memset(s, 0, sizeof s);
flag=len=1;
}
void pri()
{
for(int i=0;i<len;i++)
{
printf("%c",s[len-i-1]+'0');
}
}
void jinwei()
{
for(int i=0;i<len;i++)
{
if(s[i]>9)
{
s[i+1]+=s[i]/10;
s[i]=s[i]%10;
len=max(i+2,len);
}
}
}
};
bool cmp(dashu d1,dashu d2)
{
if(d1.flag==1&&d2.flag==1)
{
if(d1.len>d2.len)
return 0;
else if(d1.len<d2.len)
return 1;
else
{
int len=d1.len;
for(int i=0;i<len;i++)
if(d1.s[len-1-i]<d2.s[len-1-i])
return 1;
else if(d1.s[len-1-i]>d2.s[len-1-i])
return 0;
return 1;
}
}
else if(d1.flag==-1&&d2.flag==-1)
{
if(d1.len>d2.len)
return 1;
else if(d1.len<d2.len)
return 0;
else
{
int len=d1.len;
for(int i=0;i<len;i++)
if(d1.s[len-1-i]<d2.s[len-1-i])
return 0;
else if(d1.s[len-1-i]>d2.s[len-1-i])
return 1;
return 1;
}
}else if(d1.flag==1&&d2.flag==-1)
{
return 0;
}else if(d1.flag==-1&&d2.flag==1)
{
return 1;
}
return 1;
}
dashu add(dashu d1,dashu d2)
{
dashu ans;
ans.ini();
if((d1.flag==1&&d2.flag==1)||(d1.flag==-1&&d2.flag==-1))
{
int len=max(d1.len,d2.len);
for(int i=0;i<len;i++)
ans.s[i]=d1.s[i]+d2.s[i];
ans.len=len;
ans.flag=d1.flag;
ans.jinwei();
}
return ans;
}
dashu mul(dashu d1,dashu d2)
{
dashu ans,t;
ans.ini();
t.ini();
ans.flag=d1.flag*d2.flag;
for(int i=0;i<d1.len;i++)
{
int chengzi=d1.s[i];
t.ini();
t.len=i+d2.len;
for(int j=0;j<d2.len;j++)
{
t.s[i+j]=chengzi*d2.s[j];
}
t.jinwei();
ans=add(ans, t);
}
if(ans.s[ans.len-1]==0)
d1.pri();
return ans;
}
dashu zhuanhuan(int n)
{
dashu t2;
t2.ini();
for(int j=0;n!=0;j++)
{
t2.s[j]=n%10;
n/=10;
t2.len=j+1;
}
if(t2.s[t2.len-1]==0)
cout<<n<<endl;
return t2;
}
来源:https://www.cnblogs.com/King-of-Dark/p/12423312.html