1 条题解

  • 0
    @ 2025-7-31 22:28:55

    接着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
    上传者