- 373 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 19:05:24 ]
- 勉強用に、シンプルな多倍長加算を作ってるのですが
もっとシンプルに出来ますでしょうか 効率は意識していません string add(string l,string r){ int carry=0; stringstream ss; if(l.size()>r.size()){swap(l,r);} reverse(l.begin(),l.end()); reverse(r.begin(),r.end()); int i=0; for(;i<l.size();++i){ unsigned int tmp=(l[i]-'0')+(r[i]-'0')+carry; if(tmp/10){carry=1;}else{carry=0;} tmp%=10; ss<<tmp; } for(int j=i;j<r.size();++j){ unsigned int tmp=r[i]-'0'+carry; if(tmp/10){carry=1;}else{carry=0;} tmp%=10; ss<<tmp; } if(carry){ss<<'1';} string ret=ss.str(); reverse(ret.begin(),ret.end()); return ret; }
|

|