/C06024 - Tổng hai số nguyên lớn

<Problem>

https://code.ptit.edu.vn/student/question/C06024
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdbool.h>
#include <math.h>
#include <ctype.h>

void sum(char s1[], char s2[], char s3[]) {

	int len1 = strlen(s1);
	int len2 = strlen(s2);
	int dif = abs(len1 - len2);

	int len = (len1 > len2) ? len1 : len2;
	int r = 0;
	char c;

	int len3 = 0;

	for (int i = len - 1; i >= 0; i--) {

		int a, b;

		if (len1 > len2) {
			a = s1[i] - '0';
			b = (i - dif < 0) ? 0 : s2[i - dif] - '0';
		}
		else {
			a = (i - dif < 0) ? 0 : s1[i - dif] - '0';
			b = s2[i] - '0';
		}

		int t = a + b + r;
		if (t >= 10) {
			t = t - 10;
			r = 1;
		}
		else r = 0;
		c = t + '0';

		s3[len3++] = c;

	}

	if (r == 1) s3[len3++] = '1';
	s3[len3] = '\0';
}

int main() {
	int t;
	scanf("%d", &t);

	getchar();

	while (t--) {
		char s1[500];
		char s2[500];

		gets(s1);
		gets(s2);

		char s3[501];

		sum(s1, s2, s3);

		for (int i = strlen(s3) - 1; i >= 0; i--) {
			printf("%c", s3[i]);
		}
		printf("\n");
	}

	return 0;
}