uses crt; type mang = array[1..1000] of string; var st:string; function gt(s:string):longint; //Chuyen tu xau sang so var n:longint; begin val(s,n); exit(n); end; function kt(n:longint;k:string;a:mang):boolean; //Kiem tra xau k co ton tai trong mang k khong var i:longint; begin for i:=1 to n do if a[i] = k then exit(false); exit(true); end; procedure caua(st:string); var v:mang; k:string; i,a,b,c,n:longint; begin n:=0; for a:=1 to length(st) do for b:=1 to length(st) do for c:=1 to length(st) do if (gt(st[a]) = gt(st[b]) + gt(st[c])) and (a<>b) and (b<> c) and (a<>c)then begin k:=st[a]+st[b]+st[c]; if kt(n,k,v) then begin inc(n); v[n]:=k; end; end; if n = 0 then write('KHONG CO') else for i:=1 to n do write(v[i],'; '); writeln; end; function xau(s,st:string):string; var s1,s2:string; begin s1:=''; if pos(s,st) = 1 then exit(copy(st,length(s)+1,length(st)-length(s))); s1:=copy(st,1,pos(s,st)-1); s2:=copy(st,pos(s,st)+length(s),length(st)-pos(s,st)-length(s)+1); exit(s1+s2); end; function tong(st:string):longint; var i,s:longint; begin for i:=1 to length(st) do s:=s+gt(st[i]); exit(s) end; procedure caub(st:string); var min,i,j,t:longint; s1:string; begin min:=high(longint); for i:=1 to length(st) - 1 do for j:=i+1 to length(st) do begin t:=abs(tong(copy(st,i,j-i+1)) - tong(xau(copy(st,i,j-i+1),st))); if t < min then begin min:=t; s1:=copy(st,i,j-i+1); end; end; writeln('s1=',s1,';'); write('s2=',xau(s1,st)); end; BEGIN clrscr; //write('Nhap xau: '); //readln(st); st:='8769435998'; caua(st); caub(st); readln; END.