/C06066 - Tách đôi và tính tổng

<Problem>

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

char s3[200];
int len = 0;

void copyS1(char a[]) {
	int n = 0;
	for (int i = 0; i < strlen(s3) / 2; i++) {
		a[n++] = s3[i];
	}
	a[n] = '\0';
}

void copyS2(char b[]) {
	int n = 0;
	for (int i = strlen(s3) / 2; i < strlen(s3); i++) {
		b[n++] = s3[i];
	}
	b[n] = '\0';
}


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

	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';
	for (int i = 0; i < strlen(s3) / 2; i++) {
		char c = s3[i];
		s3[i] = s3[strlen(s3) - i - 1];
		s3[strlen(s3) - i - 1] = c;
	}
}

int main() {
	gets(s3);

	int kt = 0;

	while (true) {
		char s1Tmp[200], s2Tmp[200];

		copyS1(s1Tmp);
		copyS2(s2Tmp);

		sum(s1Tmp, s2Tmp);

		for (int i = 0; i < strlen(s3); i++) {
			printf("%c", s3[i]);
		}

		printf("\n");
		if (strlen(s3) == 1) break;
	}

	return 0;
}