View Code of Problem 3689

#include<iostream>
#include<algorithm>
using namespace std;
bool cmp(string s1,string s2)
{
	if(s1.size()!=s2.size())
	{
		return s1.size() < s2.size();
	}
	else
	{
		for(int i = 0;i < s1.size();i ++)
		{
			if(s1[i]!=s2[i]) return s1[i] < s2[i];
		}
	}
}
int main()
{
	int t;
	cin >> t;
	int num = 1;
	while(t --)
	{
		string s1, s2;
		cin >> s1 >> s2;
		if(cmp(s1,s2))
		{
			string str;
			cout << "Case #"<<num++<<":"<<endl;
			cout << "-";
			reverse(s1.begin(),s1.end());
			reverse(s2.begin(),s2.end());
			int k = 0;
			for(int i = 0;i < s1.size() && i < s2.size();i ++)
			{
				k += s2[i]-'0';
				if(i<s1.size()) str += char(((k+10)-(s1[i]-'0')) % 10 + '0');
				if(k < 10) k = -1;
				else k = 0;
			}
			while(str.size()>1&&str.back()=='0') str.pop_back();
			reverse(str.begin(),str.end());
			cout << str << endl;
		}
		else
		{
			string str;
			reverse(s1.begin(),s1.end());
			reverse(s2.begin(),s2.end());
			cout << "Case #"<<num++<<":"<<endl;
			int k = 0;
			for(int i = 0;i < s1.size() && i < s2.size();i ++)
			{
				k += s1[i]-'0';
				if(i<s2.size()) str += char(((k+10)-(s2[i]-'0')) % 10 + '0');
				if(k < 10) k = -1;
				else k = 0;
			}
			while(str.size()>1&&str.back()=='0') str.pop_back();
			reverse(str.begin(),str.end());
			cout << str << endl;
		}
	}
}

Double click to view unformatted code.


Back to problem 3689