Chen_Py @ 2018-08-09 20:43:41
本代码在本机测试还行,在线IDE表示TLE,提交就出现奇奇怪怪的结果+RE,求助各位大佬!
#include<bits/stdc++.h>
#include<stdio.h>
#include<cstring>
using namespace std;
struct bign
{
int len;
bool fu=0;
string str;
void getlen()
{
len=str.length();
return;
}
bign operator +(bign tmp)
{
bign ans;
int cf,temp;
if(len>tmp.len)
{
for(int i=1;i<=len-tmp.len;i++)
{
tmp.str="0"+tmp.str;
}
tmp.getlen();
}
else if(len<tmp.len)
{
for(int i=1;i<=tmp.len-len;i++)
{
str='0'+str;
}
getlen();
}
for(int i=len-1;i>=0;i--)
{
temp=str[i]-'0'+tmp.str[i]-'0';
temp+=cf;
cf=temp/10;
temp%=10;
ans.str=(char)(temp+'0')+ans.str;
}
if(cf)ans.str=(char)(cf+'0')+ans.str;
ans.getlen();
return ans;
}
bool operator <(const bign tmp)const
{
if(len!=tmp.len)return len<tmp.len;
for(int i=0;i<len;i++)if(str[i]!=tmp.str[i])return str[i]<tmp.str[i];
return 0;
}
bign operator -(bign tmp)
{
bign ans;
if(*this<tmp)
{
ans.fu=1;
for(int i=1;i<=tmp.len-len;i++)
{
str='0'+str;
}
getlen();
for(int i=len-1;i>=0;i--)
{
if(tmp.str[i]>=str[i])
ans.str=(char)(tmp.str[i]-str[i]+'0')+ans.str;
else
{
str[i-1]++;
ans.str=(char)(tmp.str[i]-str[i]+'0'+10)+ans.str;
}
}
}
else
{
ans.fu=0;
for(int i=1;i<=len-tmp.len;i++)
{
tmp.str='0'+tmp.str;
}
tmp.getlen();
for(int i=len-1;i>=0;i--)
{
if(str[i]>=tmp.str[i])
ans.str=(char)(str[i]-tmp.str[i]+'0')+ans.str;
else
{
tmp.str[i-1]++;
ans.str=(char)(str[i]-tmp.str[i]+'0'+10)+ans.str;
}
}
}
int i;
ans.getlen();
for(i=0;ans.str[i]=='0'&&i<ans.len-1;i++);
//cout<<i<<endl;
ans.str.erase(0,i);
return ans;
}
bign operator *(const int x)const
{
bign ans;
int cf=0,temp=0;
for(int i=len-1;i>=0;i--)
{
temp=cf;
temp+=(str[i]-'0')*x;
cf=temp/10;
temp%=10;
ans.str=(char)(temp+'0')+ans.str;
}
while(cf)
{
ans.str=(char)((cf%10)+'0')+ans.str;
cf/=10;
}
ans.getlen();
return ans;
}
bign operator *(bign tmp)
{
bign ans;
string ling;
bign temp;
for(int i=len-1;i>=0;i--)
{
temp=tmp*(int)(str[i]-'0');
temp.str=temp.str+ling;
temp.getlen();
ans=ans+temp;
ling=ling+"0";
}
return ans;
}
};
int main()
{
bign a,b;
cin>>a.str>>b.str;
a.getlen();
b.getlen();
bign c=a*b;
cout<<c.str<<endl;
return 0;
}
by trueldc @ 2018-08-09 20:50:33
看你的头像我还以为是图灵测试......