program bacblanc2015;
uses wincrt;
type tab=array[1..20] of integer;
var
t1,t2:tab; n:integer;
function distinct ( k:integer) : boolean;
var i:integer;
test:boolean;
begin i:=0;
repeat i:= i+1;
if t1[i] = t1[k] then test:=false else test:=true;
until (test=false ) or (i=k-1);
distinct := test;
end;
function premier(n:integer):boolean;
var i:integer;
begin i:=2;
while (n mod i <>0) and (i<=n div 2) do i:=i+1;
if i > n div 2 then
premier:=true else premier:=false;
end;
procedure saisie(var t1:tab;var n:integer);
var i:integer;
begin repeat write('n=');
readln(n);
until n in [4..20];
repeat
write('t1[1]=');
readln(T1[1]);
until (premier(t1[1])) and (t1[1] in[2..50]);
for i:=2 to n do repeat
write('t1[',i,']=');
readln(t1[i]);
until (distinct(i)) and (t1[i] in [2..50]) and (premier(t1[i])=true);
end;
function fibonacci(x:integer):integer;
var
f0,f1,fn,i:integer;
begin f0:=1;
f1:=1;
for i:=3 to x do begin
fn:=f1+f0;
f0:=f1;
f1:=fn;
end;
fibonacci:=f1;
end;
procedure remplir_t2(var t1,t2:tab);
var i:integer;
begin
for i:=1 to n do begin
t2[i]:=fibonacci(t1[i]);
write(t2[i],' ');
end;
end;
function concat_A(t2:tab):string;
var i:integer;
ch,res:string;
begin res:='';
for i:=1 to n do begin
str(t2[i],ch);
res:=res+ch;
end;
concat_A:=res;
end;
function efface_A(ch:string):string;
var i,j:integer;
begin
for i:=1 to length(ch)-1 do for j:=i+1 to length(ch) do if ch[i]=ch[j] then
delete(ch,j,1);
efface_A:=ch;
end;
begin saisie(t1,n);
write('Les elements de T2 sont : ');
remplir_t2(t1,t2);
writeln;
writeln('A= ',concat_A(t2),' et B= ',efface_A(concat_A(t2)));
end.