1 条题解
-
0
接着ADD来就行
string remove(string x,short num){ short id=x.find('.'); if(id==-1)id=x.size(); else x.erase(id,1); if(id+num<=0)for(int i=id+num-1;i<0;i++,id++)x='0'+x; if(id+num>=x.size())for(int i=id+num,k=x.size();i>=k;i--)x+='0'; id+=num; x.insert(id,1,'.'); return x; } string MUL(string a,string b){ int Id=1; if(a[0]=='-')Id*=-1; if(b[0]=='-')Id*=-1; if(a[0]=='+' || a[0]=='-')a.erase(0,1); if(b[0]=='+' || b[0]=='-')b.erase(0,1); a=KZ(a);b=KZ(b); if(a.size()>b.size())swap(a,b); short num=0,a_id=a.find('.'),id=0; if(a_id==-1)a_id=a.size(); string sum="0",add="0"; for(int i=0;i<a.size();i++){ if(a[i]=='.')continue; add="0"; num=a[i]-'0'; if(a_id-i>0)id=a_id-i-1; else id=a_id-i; //cout<<num<<' '<<id<<endl; b=remove(b,id); for(int _i=0;_i<num;_i++){ add=ADD(add,b); } b=remove(b,-id); //cout<<"add:"<<add<<endl; sum=ADD(sum,add); } sum=KZ(sum); if(Id==-1 && sum!="0")sum='-'+sum; return sum; }
- 1
信息
- 编号
- 2371
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 4.2
- 标签
- 递交数
- 2
- 已通过
- 1
- 上传者