CSES - E4590 2016 2 - Results
Submission details
Task:ModAdd
Sender:EduardoVaca
Submission time:2016-09-24 14:59:16 +0300
Language:C++
Status:READY
Result:ACCEPTED
Test results
testverdicttime
#1ACCEPTED0.05 sdetails
#2ACCEPTED0.08 sdetails
#3ACCEPTED0.09 sdetails
#4ACCEPTED0.07 sdetails
#5ACCEPTED0.07 sdetails
#6ACCEPTED0.07 sdetails
#7ACCEPTED0.07 sdetails
#8ACCEPTED0.06 sdetails
#9ACCEPTED0.07 sdetails
#10ACCEPTED0.06 sdetails

Compiler report

input/code.cpp: In function 'void print_result(const string&)':
input/code.cpp:42:30: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int i = 0; i < s.length(); i++) {
                              ^

Code

#include <iostream>
#include <ios>
#include <string>

std::string carryless_sum(const std::string& s1, const std::string& s2) {
	int cap;
	int s1_length = s1.length();
	int s2_length = s2.length();

	if (s1_length > s2_length)
		cap = s1_length;
	else
		cap = s2_length;

	std::string result(cap, '0');
	s1_length--;
	s2_length--;

	int digit_n1;
	int digit_n2;
	int temp_sum;

	for(int i = cap - 1; i >= 0; i--) {
		if(s1_length >= 0) 
			digit_n1 = s1[s1_length--] - '0';
		else
			digit_n1 = 0;
		if(s2_length >= 0) 
			digit_n2 = s2[s2_length--] - '0';
		else
			digit_n2 = 0;
		
		temp_sum = digit_n1 + digit_n2;
		result[i] = (temp_sum < 10 ? temp_sum : temp_sum - 10) + 48;
	}
	
	return result;
}

void print_result(const std::string& s){
	bool found_digit = false;
	for(int i = 0; i < s.length(); i++) {
		if (s[i] == '0' && found_digit)
			std::cout << s[i];
		if(s[i] != '0') {
			found_digit = true;
			std::cout << s[i];
		}
	}
	if(!found_digit)
		std::cout << "0";
	std::cout << std::endl;
}

int main() {

	std::ios::sync_with_stdio(false);

	std::string n1;
	std::string n2;
	std::cin >> n1;
	std::cin >> n2;
	
	print_result(carryless_sum(n1, n2));
	
	return 0;	
}

Test details

Test 1

Verdict: ACCEPTED

input
3797629225
9766508989

correct output
2453127104

user output
2453127104

Test 2

Verdict: ACCEPTED

input
552139016901047883384892240490...

correct output
552139016901047883384892240490...

user output
552139016901047883384892240490...

Test 3

Verdict: ACCEPTED

input
860793811134668093345482099582...

correct output
487710306894083216377653715430...

user output
487710306894083216377653715430...

Test 4

Verdict: ACCEPTED

input
2
870841652294197226626825161089...

correct output
870841652294197226626825161089...

user output
870841652294197226626825161089...

Test 5

Verdict: ACCEPTED

input
0
404905566051213252279994991040...

correct output
404905566051213252279994991040...

user output
404905566051213252279994991040...

Test 6

Verdict: ACCEPTED

input
430112167406460960088878635088...

correct output
430112167406460960088878635088...

user output
430112167406460960088878635088...

Test 7

Verdict: ACCEPTED

input
867016005819001635643395991596...

correct output
999999999999999999999999999999...

user output
999999999999999999999999999999...

Test 8

Verdict: ACCEPTED

input
120453771521975552204976752778...

correct output
0

user output
0

Test 9

Verdict: ACCEPTED

input
239979749009277805816504910098...

correct output
239979749009277805816504910098...

user output
239979749009277805816504910098...

Test 10

Verdict: ACCEPTED

input
990963963634143754324162574923...

correct output
818540385713473048971388312665...

user output
818540385713473048971388312665...