cho a; dãy s[a] là dãy các số thành lập bởi công thức số tiếp theo bằng tổng của số trước nó với tổng các chữ số của số trước nó (số đầu tiên là a).
vd: s[6]= 6,12,15,21,24,30,33,39,51,69,84,96,111,114....
s[42]=42,48,60,66,78,93,105,111,114,....
==> s[6] và s[42] gặp nhau (từ 111).
cho a,b.hỏi s[a] và s[b] có gặp nhau không?

Sinh số tiếp theo rồi kiểm tra thôi, có gì khó đâu nhỉ :?

while true do
begin
  a[i] := a[i - 1] + SumOfNum(a[i - 1]);
  b[i] := b[i - 1] + SumOfNum(b[i - 1]);

  if Exist(a[i], b[i]) then Exit(true); // Kiểm tra tồn tại của b[i] trong dãy a[i] và a[i] trong b[i]
end;
Exit(false);