program sujet5;
uses wincrt;
var ch:string;
p,q:integer;
function verif(ch:string):boolean;
var i:integer;
test:boolean;
begin i:=0;
repeat i:=i+1;
if ch[i] in ['A'..'Z',' '] then test:=true else test:=false;
until (test=false ) or (i=length(ch)-1);
verif:=test;
end;
procedure saisie(var ch:string;var p,q:integer);
begin repeat
write('Donner une chaine ');
readln(ch);
until (verif(ch)) and (ch[length(ch)]='.');
repeat
write('p= '); readln(p);
write('q= '); readln(q);
until (p in [2..10]) and (q in [2..10]);
end;
function code(ch:string):string;
var i:integer;
chf:string;
begin chf:='';
for i:=1 to length(ch) do if ch[i] in ['A'..'Z'] then
chf:=chf+chr((p*(ord(ch[i])-64)+q) mod 26 +65) else
chf:=chf+ch[i];
code:=chf;
end;
begin
saisie(ch,p,q);
writeln(code(ch));
end.