rt,感觉我的板子只有输出是方便的,效率不高```cpp #include #include #include using namespace std; #define N 100007 #define int long long int v_a[N],v_b[N],v_c[N]; bool lower(string a,string b){ int asz=a.size(),bsz=b.size(); if(asz!=bsz) return asz<bsz; for(int i=0;i<asz;++i){ if(a[i]!=b[i]) return a[i]<b[i]; } return 0; } string add(string a,string b){ int la=a.size(),lb=b.size(); reverse(a.begin(),a.end()); reverse(b.begin(),b.end()); memset(v_a,0,sizeof(v_a)); memset(v_b,0,sizeof(v_b)); memset(v_c,0,sizeof(v_c)); for(int i=0;i<la;++i) v_a[i]=a[i]-'0'; for(int i=0;i<lb;++i) v_b[i]=b[i]-'0'; for(int i=0;i<=max(la,lb);++i) v_c[i]=v_a[i]+v_b[i]; for(int i=0;i<=max(la,lb);++i){ if(v_c[i]>=10){ v_c[i]-=10; v_c[i+1]++; } } reverse(v_c,v_c+max(la,lb)+1); int h=0; string as; for(int j=0;j<=max(la,lb);++j){ if(!h&&v_c[j]==0) continue; else{ as.push_back(v_c[j]+'0'); h=1; } } return as; } string jian(string a,string b){ int la=a.size(),lb=b.size(); reverse(a.begin(),a.end()); reverse(b.begin(),b.end()); memset(v_a,0,sizeof(v_a)); memset(v_b,0,sizeof(v_b)); memset(v_c,0,sizeof(v_c)); for(int i=0;i<la;++i) v_a[i]=a[i]-'0'; for(int i=0;i<lb;++i) v_b[i]=b[i]-'0'; for(int i=0;i<max(la,lb);++i) v_c[i]=v_a[i]-v_b[i]; for(int i=0;i<max(la,lb);++i){ if(v_c[i]<0){ v_c[i]+=10; v_c[i+1]--; } } reverse(v_c,v_c+max(la,lb)); int h=0; string as; int asz=a.size(); for(int j=0;j<asz;++j){ if(!h&&v_c[j]==0) continue; else{ as.push_back(v_c[j]+'0'); h=1; } } return as; } string mul(string a,int b){ int la=a.size(); reverse(a.begin(),a.end()); memset(v_a,0,sizeof(v_a)); memset(v_c,0,sizeof(v_c)); for(int i=0;i<la;++i) v_a[i]=a[i]-'0'; for(int i=0;i<la;++i) v_c[i]=v_a[i]*b; int i; for(i=0;i<la;++i) v_c[i+1]+=v_c[i]/10,v_c[i]%=10; while(1){ v_c[i+1]+=v_c[i]/10; v_c[i] %=10; if(v_c[++i]==0) break; } reverse(v_c,v_c+la+1); int h=0; string as; for(int j=0;j<i;++j){ if(!h&&v_c[j]==0) continue; else{ as.push_back(v_c[j]+'0'); h=1; } } return as; }
string div(string a,int b){ if(lower(a,to_string(b))) return "0"; int res=0; string r; int sza=a.size(); for(int i=0;i<sza;i++){ res*=10; res+=a[i]-'0'; if(res>=b){ r.push_back(res/b+'0'); res=res-res/bb; } else{ if(r!="")r.push_back('0'); } } return r; } int mod(string a,int b){ int ans=0; for(int i=0;i<a.size();++i){ ans=(ans10+(a[i]-'0'))%b; } return ans; } signed main(){
}