谁能帮我写个高精除?太蒻了不会写qwq
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
class big{
public:
ll len;
map<ll,ll>mp;
big(){
len=0;
}
big(int x){
while(x){
mp[++len]=x%10;
x/=10;
}
}
big(ll x){
while(x){
mp[++len]=x%10;
x/=10;
}
}
big(string x){
for(ll i=x.size();i>=1;i--){
mp[++len]=x[i-1]-48;
}
}
big(char x[]){
for(ll i=strlen(x);i>=1;i--){
mp[++len]=x[i-1]-48;
}
}
big operator=(string x){
len=0;
for(ll i=x.size()-1;i>=0;i--){
mp[++len]=x[i]-48;
}
return *this;
}
big operator=(char x[]){
len=0;
for(ll i=strlen(x)-1;i>=0;i--){
mp[++len]=x[i]-48;
}
return *this;
}
big operator+(big b){
for(ll i=1;i<=max(len,b.len);i++){
mp[i]+=b.mp[i];
mp[i+1]+=mp[i]/10;
mp[i]%=10;
}
len=max(len,b.len);
if(mp[len+1]){
len++;
}
return *this;
}
big operator-(big b){
for(ll i=1;i<=len;i++){
mp[i]-=b.mp[i];
mp[i+1]+=(mp[i]-9)/10;
mp[i]+=10;
mp[i]%=10;
}
while(!mp[len]&&len!=1){
len--;
}
return *this;
}
big operator*(big b){
big c;
for(int i=1;i<=len;i++){
for(int j=1;j<=b.len;j++){
c.mp[i+j-1]+=mp[i]*b.mp[j];
c.mp[i+j]+=c.mp[i+j-1]/10;
c.mp[i+j-1]%=10;
}
}
c.len=len+b.len;
if(!c.mp[c.len]){
c.len--;
}
return c;
}
big operator/(big b){
}
big operator%(big b){
return (*this)-(*this)/b*b;
}
big operator+=(big b){
return (*this)=(*this)+b;
}
big operator-=(big b){
return (*this)=(*this)-b;
}
big operator*=(big b){
return (*this)=(*this)*b;
}
big operator/=(big b){
return (*this)=(*this)/b;
}
big operator%=(big b){
return (*this)=(*this)%b;
}
big operator++(){
return (*this)+=1;
}
big operator--(){
return (*this)-=1;
}
void input(){
string s="\0";
cin>>s;
(*this)=s;
}
void output(){
for(ll i=len;i>=1;i--){
cout<<mp[i];
}
}
};
int main(){
return 0;
}