0
已解决
王梓轩
资深光能
资深光能
之前确实有SL工作室抄袭行为,已改正,然后...
不说了,上代码!!!
#include<bits/stdc++.h>
using namespace std;
string gjdjia(string a,string b)
{
string gjdjian(string,string);
bool bijiao(string,string);
string c="";
int flag=0;
if(a[0]=='-'&&b[0]=='-')flag=1,a.erase(0,1),b.erase(0,1);
if(b[0]=='-'&&a[0]!='-')swap(a,b);
if(a[0]=='-'&&b[0]!='-')
{
a.erase(0,1);
if(a==b)return "0";
return bijiao(a,b)?'-'+gjdjian(a,b):gjdjian(b,a);
}
reverse(a.begin(),a.end()),reverse(b.begin(),b.end());
int t=0;
for(int i=0;i<a.size()||i<b.size();i++)
{
if(i<a.size())t+=a[i]-'0';
if(i<b.size())t+=b[i]-'0';
c+=t%10+'0';
t/=10;
}
if(t)c+=t%10+'0';
if(flag)c+='-';
reverse(c.begin(),c.end());
return c;
}
string gjdjian(string a,string b)
{
int flag=0;
if(a==b||a.substr(1,a.size())==b||b.substr(1,b.size())==a)return "0";
if((a[0]=='-'&&b[0]=='-')||(a[0]!='-'&&b[0]=='-'))
{
b.erase(0,1);
return gjdjia(a,b);
}
if(a[0]=='-'&&b[0]!='-')
{
a.erase(0,1);
return '-'+gjdjia(a,b);
}
string ans;
reverse(a.begin(),a.end());
reverse(b.begin(),b.end());
if(a.size()<b.size()||b.size()==a.size()&&b>a)swap(a,b),flag=1;
while(b.size()<a.size())b+='0';
int c[10005]={0},k=a.size();
for(int i=0;i<a.size();i++)
{
if(a[i]<b[i])a[i]+=10,a[i+1]--;
c[i]=a[i]-b[i];
}
while(c[k]==0&&k>=0)k--;
while(k>=0)
ans+=c[k--]+'0';
if(flag)
return '-'+ans;
return ans;
}
string gjdcheng(string a,string b)
{
string ans;
int flag=0;
reverse(a.begin(),a.end());
reverse(b.begin(),b.end());
if(a[a.size()-1]=='-'&&b[b.size()-1]!='-')flag=1,a.erase(a.size()-1,a.size());
if(b[b.size()-1]=='-'&&a[a.size()-1]!='-')flag=1,b.erase(b.size()-1,b.size());
if(a[a.size()-1]=='-')a.erase(a.size()-1,a.size());
if(b[b.size()-1]=='-')b.erase(b.size()-1,b.size());
int c[10005]={0},k=a.size()+b.size()+1;
for(int i=0;i<a.size();i++)
for(int j=0;j<b.size();j++)
{
c[i+j]+=(a[i]-'0')*(b[j]-'0');
c[i+j+1]+=c[i+j]/10;
c[i+j]%=10;
}
while(c[k]==0&&k>=0)k--;
while(k>=0)
ans+=c[k--]+'0';
if(ans=="")return "0";
if(flag)
return '-'+ans;
return ans;
}
bool bijiao(string a,string b)
{
if(a.size()>b.size()||a.size()==b.size()&&a>=b)return 1;
return 0;
}
string gjdchu(string a,string b,int x)
{
if(b=="0")return "error";
int flag=0,flagg=0;
string c;
if(a[0]=='-')a.erase(0,1),flag=1,flagg=1;
if(b[0]=='-')
{
b.erase(0,1);
if(flag==1)flag=0;
else flag=1;
}
int t=b.size(),pos;
for(int i=b.size();i<a.size();i++)b+='0';
while(t<=b.size())
{
int s=0;
while(bijiao(a,b))
{
a=gjdjian(a,b);
s++;
}
b=b.substr(0,b.size()-1);
c+=s+'0';
}
string::size_type i=c.find_first_not_of('0');
if(i!=string::npos)c.erase(0,i);
if(x==1)
{
if(c==""||c=="-0")return "0";
if(flag)
{
if(c=="0")return "0";
return '-'+c;
}
return c;
}
else
{
if(a==""||a=="-0")return "0";
if(flagg)
{
if(a=="0")return "0";
return '-'+a;
}
return a;
}
}
int main()
{
}
解释:
string gjdjia(string,string);
高精度加法,返回值字符串,支持负数,不支持小数(后续支持)
其余的...
不说了,跟一样。
好的,如有借鉴者,请附上原文链接(此为原文...原创!!!)
王梓轩在2022-12-30 09:46:52追加了内容
链接:https://wenda.codingtang.com/questions/22089/
如有抄袭,后果自负
王梓轩在2022-12-30 09:59:08追加了内容
都复制了,点个赞没意见吧,毕竟两秒时间你花得起吧。
https://kuding1024.com/#/share?uuid=2e66c58fbf33479493161f54ed5336ce
王梓轩在2022-12-30 10:50:56追加了内容
ding