View Code of Problem 132

#include<bits/stdc++.h>
using namespace std;
int main(){
	string a,b;
	int p1,p2,f1,f2;
	while(cin>>a>>b){
		string a1,a2,b1,b2;
		p1=a.find('.');
		p2=b.find('.');
		a1=a.substr(0,p1);
		b1=b.substr(0,p2);
		if(p1==-1)
		a2="0";
		else
		a2=a.substr(p1+1,a.size());
		if(p2==-1)
		b2="0";
		else
		b2=b.substr(p2+1,b.size());
		if(a1.size()<b1.size())
			swap(a1,b1);
		if(a2.size()<b2.size())
			swap(a2,b2);
		int lx=a1.size()-b1.size();
		int xl=a2.size()-b2.size();
		while(lx--)b1='0'+b1;
		while(xl--)b2=b2+'0';
		int l1=a1.size(),flag1=0;
		int l2=a2.size(),flag2=0,flag3=0;
		while(l2--){
			a2[l2]=a2[l2]+b2[l2]-'0'+flag2;
			if(a2[l2]-'0'>9){
				a2[l2]-=10;flag2=1;
			}
			else
			flag2=0;
		}
		while(l1--){
			a1[l1]=a1[l1]+b1[l1]-'0'+flag1;
			if(a1[l1]-'0'>9){
				a1[l1]-=10;flag1=1;
			}
			else
			flag1=0;
		}
		if(flag2){
			b1="1";
			lx=a1.size()-1;
			while(lx--)b1='0'+b1;
			int l3=a1.size();
			while(l3--){
			a1[l3]=a1[l3]+b1[l3]-'0'+flag3;
			if(a1[l3]-'0'>9){
				a1[l3]-=10;flag3=1;
			}
			else
			flag3=0;
			}
		}
		if(flag1==1||flag3==1)
		cout<<'1';
		cout<<a1;
		int fd=0;
		for(int j=a2.size()-1;j>=0;j--)
		if(a2[j]=='0')a2.erase(j,1);
		else
		break;
		for(int i=0;i<a2.size();++i)fd+=(a2[i]-'0');
		if(fd!=0)
		cout<<'.'<<a2<<endl;
		else
		cout<<endl;
	}
}

Double click to view unformatted code.


Back to problem 132