#include<bits/stdc++.h> using namespace std; vector<int> ff(string s){ vector<int> k; for(int i=0;i<s.size();++i){ k.push_back(s[i]-48); } return k; } void suan(vector<int> &aa11,vector<int> &bb11,int cha){ for(int i=bb11.size()-1;i>=cha;--i){ bb11[i]+=aa11[i-cha]; if(i!=0){ bb11[i-1]+=bb11[i]/10; bb11[i]%=10; } } for(int i=cha;i>0;--i){ bb11[i-1]+=bb11[i]/10; bb11[i]%=10; } } void suanxiaoshu(vector<int> &aa22,vector<int> &bb22){ int xiaoshu=min(aa22.size(),bb22.size()); for(int i=xiaoshu-1;i>0;--i){ aa22[i]+=bb22[i]; aa22[i-1]+=aa22[i]/10; aa22[i]%=10; } aa22[0]+=bb22[0]; for(int i=aa22.size();i<bb22.size();++i){ aa22.push_back(bb22[i]); } } int main(){ string a,b; while(cin>>a>>b){ stack<int> p; vector<int> aa11,aa22,bb11,bb22; string aa1,aa2,bb1,bb2; for(int i=0;i<a.size();++i){ if(a[i]=='.'){ aa1=a.substr(0,i); aa2=a.substr(i+1); } } for(int i=0;i<b.size();++i){ if(b[i]=='.'){ bb1=b.substr(0,i); bb2=b.substr(i+1); } } if(aa1==""){ aa1=a; aa2="0"; } if(bb1==""){ bb1=b; bb2="0"; } aa11=ff(aa1); aa22=ff(aa2); bb11=ff(bb1); bb22=ff(bb2); suanxiaoshu(aa22,bb22); if(aa22[0]>=10){ aa11[aa11.size()-1]+=aa22[0]/10; aa22[0]%=10; } int m1=aa11.size(); int m2=bb11.size(); if(m1<=m2){ suan(aa11,bb11,m2-m1); }else{ suan(bb11,aa11,m1-m2); } int flag1=0,flag2=0; for(int i=0;i<bb11.size();++i){ if(bb11[i]!=0) flag1=1; if(flag1) cout<<bb11[i]; } if(flag1==0) cout<<"0"; for(int i=0;i<aa22.size();++i){ if(aa22[i]!=0) flag2=1; } if(flag2){ cout<<"."; for(int i=0;i<aa22.size();++i){ if(aa22[i]==0) p.push(aa22[i]); else{ while(!p.empty()){ cout<<p.top(); p.pop(); } cout<<aa22[i]; } } } cout<<endl; } } |
Double click to view unformatted code.