program HalvesSumCheck;
function SumDigits(n: longint): integer;
var
sum: integer;
begin
sum := 0;
while n <> 0 do
begin
sum := sum + (n mod 10);
n := n div 10;
end;
SumDigits := sum;
end;
function CheckHalvesSumEqual(n: longint): boolean;
var
s, firstHalf, secondHalf: string;
lengthNum, halfLen: integer;
num1, num2, code: integer;
begin
str(abs(n), s);
lengthNum := length(s);
if (lengthNum mod 2) <> 0 then
begin
write('The number of digits is NOT even. It cannot be split into two halves: ');
CheckHalvesSumEqual := false;
exit;
end;
halfLen := lengthNum div 2;
firstHalf := copy(s, 1, halfLen);
secondHalf := copy(s, lengthNum - halfLen + 1, halfLen);
val(firstHalf, num1, code);
val(secondHalf, num2, code);
CheckHalvesSumEqual := (SumDigits(num1) = SumDigits(num2));
end;
var
num1, num2, num3, num4, num5, num6: longint;
begin
num1 := 123456;
num2 := 123321;
num3 := 123123;
num4 := 123411;
num5 := 1234321;
num6 := 12321;
writeln(num1, ': ', CheckHalvesSumEqual(num1));
writeln(num2, ': ', CheckHalvesSumEqual(num2));
writeln(num3, ': ', CheckHalvesSumEqual(num3));
writeln(num4, ': ', CheckHalvesSumEqual(num4));
writeln(num5, ': ', CheckHalvesSumEqual(num5));
writeln(num6, ': ', CheckHalvesSumEqual(num6));
end.
(*
run:
123456: FALSE
123321: TRUE
123123: TRUE
123411: TRUE
1234321: The number of digits is NOT even. It cannot be split into two halves: FALSE
12321: The number of digits is NOT even. It cannot be split into two halves: FALSE
*)