You are on page 1of 100

S N IU

Cc s nguyn dng: 3748, 58, 859, 32435465768 c gi l cc s n


iu do nu quan st cc ch s ca cc s ny, ta thy chng lun phin tng gim
hoc gim tng. Chng hn:
3 < 7 > 4 < 8 v 3 > 2 < 4 > 3 < 5 > 4 < 6 > 5 < 7 > 6 < 8
S ch c mt ch s l s n iu chiu di 1.
Nhim v:
Vit chng trnh xc nh s ch s u tin ln nht to thnh s n iu ca mt
s cho trc.
Tn tp tin chng trnh:
WIGGLE.PAS
D liu:
Cho trong tp tin vn bn WIGGLE.IN, gm mt dng duy nht cha mt s nguyn
dng duy nht c khng qu 75 ch s.
Kt qu:
Cho trong tp tin vn bn WIGGLE.OUT, cha mt s nguyn duy nht ch s ch s
u tin ln nht to thnh s n iu ca s tng ng trong tp tin d liu.
V d:
WIGGLE.IN
3748

WIGGLE.OUT
4

program sdd;
uses crt;
var f1,f2:text;
n,i:longint;
x:string;
ok:boolean;
begin
clrscr;
assign(f1,'qqq.inp');
reset(f1);
assign(f2,'www.out');
rewrite(f2);
readln(f1,n);
str(n,x);
for i:=1 to length(x)-2 do
if (ord(x[i])-ord(x[i+1]))*(ord(x[i+2])-ord(x[i+1]))<=0 then break ;
write(f2,i+1);
close(f1);

close(f2);
readln;
end.
S I XNG
Mt s m c t tri sang phi ging ht nh c t phi sang tri gi l s
i xng. S 14541 l s i xng cn s 66667 khng l s i xng. Hin nhin s
0330 khng l s i xng (do s 0 ng v tr u tin bn tri).
S 21 (biu din trong c s 10) khng l s i xng, nhng s 21 (biu din trong
c s 10) l s i xng nu biu din trong c s 2 (10101).
Nhim v:
Vit chng trnh c vo hai s (biu din trong c s 10)
N (1 <= N <= 15)
S (0 < S < 10000)
v xut ra (trong c s 10):
N s u tin ln hn S v l s i xng khi biu din trong t nht hai c s

c khc nhau (2 <= c <= 10).


S s nguyn t trong N s ni trn

Tn tp tin chng trnh:


DUALPAL.PAS
D liu:
Cho trong tp tin vn bn DUALPAL.IN, gm mt dng duy nht cha hai s nguyn
N v S, cch nhau mt khong trng.
Kt qu:
Cho trong tp tin vn bn DUALPAL.OUT, gm N+1 dng. Trn mi dng ca N
dng u tin l mt s i xng khi c biu din trong t nht hai h c s c (2 <=
c <= 10). Cc s trong N dng u tin phi tha yu cu ca bi v c sp theo
th t tng dn. Trn dng N+1 cha mt s nguyn duy nht, ch s s nguyn t
trong N dng trn.
V d:
DUALPAL.IN
3 25

program csc;
uses crt;
var f1,f2:text;

DUALPAL.OUT
26
27
28
0

n,s,c,e,dem,dem1,dem2,i:longint;
a:array[1..300] of integer;
function ktnt(n:integer):boolean;
var i,m,e:integer;
begin
ktnt:=false;
if n<2 then exit;
for i:=2 to trunc(sqrt(n)) do
if n mod i =0 then exit;
ktnt:=true;
end;
function ccs(n,e:integer):string;
var i,h,k,q:integer;
s,s1:string;
begin
s:='';
while n<>0 do
begin
k:=n mod e;
str(k,s1);
s:=s1 +s;
n:=n div e;
end;
ccs:=s;
end;
function ktdx(n:string):boolean;
var i,e:integer;
begin
ktdx:=true;
for i:=1 to length(n) do
if n[i]<>n[length(n)-i+1] then ktdx:=false;
end;
begin
clrscr;
assign(f1,'dualpal.inp');
assign(f2,'dualpal.out');
reset(f1);
rewrite(f2);
read(f1,n,s);

dem1:=0;
i:=0;
repeat
s:=s+1;
dem:=0;
for e:=2 to 10 do
if ktdx(ccs(s,e)) then dem:=dem+1;
if dem>=2 then
begin writeln(f2,s);
i:=i+1;
a[i]:=s;
dem1:=dem1+1;
end;
until dem1=n;
dem2:=0;
for i:=1 to n do
if ktnt(a[i]) then dem2:=dem2+1 ;
write(f2,dem2);
close(f1);
close(f2);
readln;
end.
S PHN NGUYN T
Mt s n gi l s phn nguyn t nu s c s ca n l nhiu nht trong n
s t nhin u tin. Cho s K (K <= 2 t). Hy ghi ra s phn nguyn t ln nht nh
hn hoc bng K.
D liu vo trong file PNT.INP ni dung gm:
- Dng u tin l s M (1 < M <= 100) - s cc s cn tm s phn nguyn t ln
nht ca n;
- M dng tip theo ln lt l cc s K1, K2, K3, ..., KM;
D liu ra trong file PNT.OUT gm M dng: dng th i l s phn nguyn t ln nht
nh hn hoc bng Ki.
V d:
PNT.INP
1
1000
PNT.OUT
840

program sophannguyento;
uses crt;
type ma=array[1..50] of longint;
var m,i:integer;
max,j:longint;
a:ma;
f1,f2:text;
function su(n:longint):integer;
var i,dem:longint;
begin
dem:=0;
for i:=1 to n do
if n mod i=0 then dem:=dem+1;
su:=dem;
end;
BEGIN
clrscr;
assign(f1,'pnt.inp');
reset(f1);
assign(f2,'pnt.out');
rewrite(f2);
readln(f1,m);
for i:=1 to m do
readln(f1,a[i]);
for i:=1 to m do
begin
max:=1;
for j:=2 to a[i] do
if su(j)>su(max) then max:=j;
writeln(F2,max);
end;
close(f1);
close(f2) ;
readln;
END.

S nguyn t tng ng
Hai s t nhin c gi l Nguyn t tng ng nu chng c chung cc
c s nguyn t.
V d: Cc s 75 v 15 l nguyn t tng ng v cng c cc c nguyn
t l 3 v 5.
Yu cu: Cho trc hai s t nhin N, M. Hy vit chng trnh kim tra xem
cc s ny c l nguyn t tng ng vi nhau hay khng?
D liu vo: Cho trong file vn bn PRIME.INP gm mt dng duy nht cha
hai s nguyn N v M, mi s cch nhau t nht mt du cch( 2 M N
300000000000000000).
D liu ra: Xut ra file vn bn PRIME.OUT, nu chng l nguyn t tng
ng ghi YES, ngc li: ghi NO.
V d:
PRIME.INP PRIME.OUT
75 15
YES

S nguyn t cung nhau:


Hai s nguyn dng c gi l nguyn t cng nhau nu c s chung ln
nht ca chng bng 1.
Cho N s nguyn dng A1,A2,...,AN. Gi M l gi tr ln nht trong cc s
A1,A2,...,AN.
Vit chng trnh tm s nguyn dng X ln nht khng vt qu M m X
nguyn t cng nhau vi tt c cc s A1,A2,...,AN.
D li u vo l t p NTCN.Inp c cu trc nh sau:
- Dng u l s nguyn dng N (N100).
- N dng tip theo, mi dng cha m t gi tr tng ng A1,A2,...,AN
(Ai1000;i=1,2,...,N).
D li u ra l t p NTCN.Out cha s nguyn X tm c tha mn iu ki n ca
bi ton.
V d:
NTCN.Inp
NTCN.Out
3
13
4
12
15
program nguyen_to_cung_nhau;
uses crt;
type ma=array[1..100] of integer;
var a:ma;
n,i,x:integer;
f1,f2:text;
ok:boolean;

function max(a:ma;n:integer):integer;
var m,i:integer;
begin
m:=a[1];
for i:=2 to n do
if a[i]>m then m:=a[i];
max:=m;
end;
function kt(a,b:integer):boolean;
var r:integer;
begin
kt:=false;
while b<>0 do
begin
r:=a mod b;
a:=b;
b:=r;
end;
if a=1 then kt:=true;
end;
BEGIN
assign(f1,'ntcn.inp');
assign(f2,'ntcn.out');
reset(f1);
rewrite(f2);
readln(f1,n);
for i:=1 to n do
readln(f1,a[i]);
x:=max(a,n);
repeat
ok:=true;
for i:=1 to n do
if not kt(x,a[i]) then ok:=false;
if ok then break;
x:=x-1;
until 1<0;
write(f2,x);
close(f1);
close(f2);

END.
DY S FIBONACI
Nh cc bn bit dy s Fibonaci l dy 1, 1, 2, 3, 5, 8, .... Dy ny cho bi
cng thc qui sau:
F1 = 1, F2 =1, Fn = Fn-1 + Fn-2 vi n > 2
1. Chng minh khng nh sau:
Mi s t nhin N u c th biu din duy nht di dng tng ca mt s s trong
dy s Fibonaci.
N = akFk + ak-1Fk-1 + .... a1F1
Vi biu din nh trn ta ni N c biu din Fibonaci l akak-1...a2a1.
2. Cho trc s t nhin N, hy tm biu din Fibonaci ca s N.
Input:
Tp vn bn P11.INP bao gm nhiu dng. Mi dng ghi mt s t nhin.
Output:
Tp P11.OUT ghi kt qu ca chng trnh: trn mi dng ghi li biu din Fibonaci
ca cc s t nhin tng ng trong tp P11.INP.
{$R+}
const
Inp = 'P11.INP';
Out = 'P11.OUT';
Ind = 46;
var
n: LongInt;
Fibo: array[1..Ind] of LongInt;
procedure Init;
var
i: Integer;
begin
Fibo[1] := 1; Fibo[2] := 1;
for i := 3 to Ind do Fibo[i] := Fibo[i - 1] + Fibo[i - 2];
end;
procedure Solution;
var
i: LongInt;
hfi, hfo: Text;
begin
Assign(hfi, Inp);
Reset(hfi);

Assign(hfo, Out);
Rewrite(hfo);
while not Eof(hfi) do
begin
Readln(hfi, n);
Write(hfo, n, ' = ');
i := Ind; while Fibo[i] > n do Dec(i);
Write(hfo, Fibo[i]);
Dec(n, Fibo[i]);
while n > 0 do
begin
Dec(i);
if n >= Fibo[i] then
begin
Write(hfo, ' + ', Fibo[i]);
Dec(n, Fibo[i]);
end;
end;
Writeln(hfo);
end;
Close(hfo);
Close(hfi);
end;
begin
Init;
Solution;
end.

Program tuan;
uses crt;
var f1,f2:text;
n,i:longint;
fi:array[1..50] of longint;
function f(n:integer):longint;
begin
if (n=1) or (n=2) then f:=1
else f:=f(n-1)+f(n-2);
end;
BEGIN
clrscr;
write(f(40));
assign(f1,'p11.inp');
reset(f1);
assign(f2,'p11.out');

REWRITE(f2);
fi[1]:=1;
fi[2]:=1;
for i:=3 to 50 do
fi[i]:=fi[i-1]+fi[i-2];
while not eof(f1) do
begin
readln(f1,n);
write(f2,n,' = ');
i:=40;
while fi[i]>n do i:=i-1;
write(f2,fi[i]);
n:=n-fi[i];
while (n>0) do
begin
i:=i-1;
if n>=fi[i] then
begin
write(f2,' + ',fi[i]);
n:=n-fi[i];
end;
end;
writeln(f2);
end;
close(f1);
close(f2);
End.

Dy FIBONACI
Dy FIBONACI l dy c xc nh nh sau: F(0) = 0; F(1) = 1 v F(n) = F(n-1) +
F(n-2) vi n = 2, 3...
Hy vit chng trnh my tnh nhp t bn phm s nguyn dng M
(2<M<2000000000), ri xut ra mn hnh s FIBONACI ln nht l nguyn t v nh hn M.
V d: Vi M=10 th cc s FIBONACI nh hn M l: 0, 1, 1, 2, 3, 5, 8. S 5 l s nguyn t
ln nht trong cc s FIBONACI nh hn M. Vy cn a ra mn hnh dng thng bo kt
qu: S cn tm l: 5.
uses crt;
var j,i,m,a,b,t:longint;
Function kt(n:longint):boolean;
var i,d:integer;
begin
kt:=false;
d:=0;
For i:=1 to n do
if n mod i=0 then inc(d);

if d=2 then kt:=true;


end;
begin
clrscr;
Write('Nhap m= ');
readln(m);
a:=0;
b:=1;
Repeat
a:=a+b;
b:=a+b;
Until (a>=m) and (b>=m);
if a<b then begin t:=a;a:=b;b:=t;end;
Repeat
a:=a-b;
b:=b-a;
Until ( (kt(a)) and (a<m))

or ( (kt(b)) and (b<m) );

If a>b then writeln(a);


if b>a then writeln(b);
readln
end.

S SIU NGUYN T
S siu nguyn t l s nguyn t m khi b mt s tu cc ch s bn phi
ca n th phn cn li vn to thnh mt s nguyn t.
V d 7331 l mt s siu nguyn t c 4 ch s v 733, 73, 7 cng l cc s nguyn
t.
Nhim v ca bn l vit chng trnh nhp d liu vo l mt s nguyn N (0< N
<10) v a ra kt qu l mt s siu nguyn t c N ch s cng s lng ca chng.
V d khi chy chng trnh:
Nhap so N: 4
Cac so sieu nguyen to c 4 chu so la: 2333 2339 2393 2399 2939 3119
3137 3733 3739 3793 3797 5939 7193 7331 7333 7393
Tat ca co 16 so.
{SuperPrime};
var a,b: array [1..100] of longint;
N,i,k,ka,kb,cs: byte;
Function Prime(N: longint): boolean;
Var i: longint;
Begin

If (N=0) or (N=1) then


Prime:=false
Else
Begin
i:=2;
While (N mod i <> 0) and (i <= Sqrt(N)) do Inc(i);
If i > Sqrt(N) then
Prime:=true Else Prime:=false;
End;
End;
BEGIN
Write ('Nhap N: ');
Readln (N);
ka:=1; a[ka]:=0;
For i:=1 to N do
Begin
Kb:=0;
For k:=1 to ka do
For cs:=0 to 9 do
If Prime(a[k]*10+cs) then
Begin
Inc(kb);
b[kb]:=a[k]*10+cs;
end;
ka:=kb;
For k:=1 to ka do
a[k]:=b[k]; end;
For k:=1 to ka do
Write(a[k]:10);
Writeln;
Writeln('Co tat ca',ka,'so sieu nguyen to co',N,'chu so.');
Readln;
END.
program sieunt;
uses crt ;
var n,j,max,maxt,dem:integer;
i:longint;
f1,f2:text;
a:array[1..50000] of longint;
function kt(n:integer):boolean;
var i:INTEGER;
begin
kt:=false;
if n<2 then exit;
for i:=2 to trunc(sqrt(n)) do
if n mod i = 0 then exit;
kt:=TRUE;
end;

function mu(a,b:integer):longint;
var s,i:longint;
begin
s:=1;
for i:=1 to b do
s:=s*a;
mu:=s;
end;
BEGIN
assign(f1,'input.inp');
reset(f1);
assign(f2,'output.out');
rewrite(f2);
read(f1,n);
dem:=0;
j:=1;
for i:=mu(10,n-1) to (mu(10,n)-1) do
begin
a[j]:=i;
while (kt(a[j])) and (a[j]>10) do
a[j]:=a[j] div 10 ;
if (kt(a[j])) and (a[j]<10) then
begin
write(f2,i);
write(f2,' ');
dem:=dem+1;
end;
j:=j+1;
end;
writeln(f2);
write(f2,'co ',dem,' so');
close(f1);
close(f2);
readln
end.

S nguyn t i xng
Mt s T c gi l s nguyn t i xng nu tha mn cc yu cu sau:
- T l s nguyn t
- T l mt s i xng (c T t tri qua phi thu c kt qu ging
nh c T t phi qua tri). V d 12321 l mt s i xng.
Yu cu: cho 2 s nguyn dng A v B, hy tm s lng cc s nguyn t
i xng T tha mn ATB.
D liu: Vo t file vn bn PRIME.INP gm 1 dng cha 2 s nguyn dng
A v B (104A<B<105).
Kt qu: a ra file vn bn PRIME.OUT 1 s nguyn l s lng s nguyn
t i xng tm c.
V d:

11111

PRIME.INP
22222

PRIME.OUT
23

tng: - Trc ht ta cn xy dng 1 hm c tn l ntdx c kiu Boolean


kim tra 1 s n no c phi l s nguyn t i xng hay khng thng qua 2
cng on:
+ Cng on 1: kim tra n c phi l s NT hay khng
+ Cng on 2: Tm s o ngc ca n kim tra n c i xng hay khng.
Nu n tha mn c 2 iu kin: l s nguyn t v i xng th kt lun n l s
nguyn t i xng.
- Dng 1 vng for duyt bin m i t a n b, mi ln lp kim tra i
c phi l s nguyn t i xng hay khng thng qua hm ntdx, nu
hm ntdx tr v gi tr TRUE th tng bin m d ln 1 n v.
Chng trnh tham kho
var a,b:longint;
i,d:longint;
function ntdx(n:longint):boolean;
var ok,nt:boolean;
i,j,p,k:integer;
begin
ok:=false;
if n=1 then nt:=false
else
if n<4 then nt:=true
else
begin
nt:=true;
for i:=2 to trunc(sqrt(n)) do
if n mod i=0 then nt:=false;
end;
p:=n;j:=0;
while n<>0 do
begin
k:=n mod 10;
j:=j*10+k;
n:=n div 10;
end;
if (j=p) and (nt) then ok:=true;
ntdx:=ok;{gan ten ham bang bieu thuc}
end;
BEGIN
write('a, b=');readln(a,b);
d:=0;
for i:=a to b do

if ntdx(i) then d:=d+1;


write(d);
readln
end.
program ntdx;
uses crt ;
var a,b,i,s:longint;
f1,f2:text;
function snt(n:longint) : boolean;
var i:longint;
ok:boolean;
begin
ok:=false;
i:=1;
repeat i:=i+1;
until (i*i>n) or (n mod i=0);
if (i*i>n) then ok:=true;
snt:=ok;
end;
function sdx(n:longint) : boolean;
var x:string;
ok:boolean;
i:longint;
begin
str(n,x);
for i:=1 to (length(x) div 2) do
if x[i]=x[n-i+1] then ok:=true
else ok:=false;
sdx:=ok;
end;
begin
clrscr;
assign(f1,'NTDX.INP');
reset(f1);
assign(f2,'NTDX.OUT');
rewrite(f2);
read(f1,a,b);
s:=0;
for i:=a to b do
if snt(i) and sdx(i) then
s:=s+1;
write(f2,s);
close(f1);
close(f2);
readln;
end.
TNG 2 S NGUYN T

Trong mt bc th m Christian Goldbach gi cho Euler, ng cp


n phng on ca mnh: Mi s t nhin chn ln hn 2 u l tng ca 2 s
nguyn t.
Hy lp chng trnh kim chng phng on ca Goldbach.
Yu cu:
- D liu vo t file GB.INP gm nhiu dng, dng u l s test (<10), cc
dng tip theo mi dng ghi 1 s t nhin chn ln hn 2 (<32000)
- D liu ra l file GB.OUT gm cc dng (mi dng ng vi 1 test) - mi
dng gm 2 s nguyn t cch nhau t nht 1 du cch c tng bng s cho (hoc
khng tm c ghi l khong).
Input
3
8
12
5
program ptnt;
uses crt ;
var n,i,j,m,p:integer;
f1,f2:text ;
a:array[1..20] of integer;
function kt(n:integer):boolean;
var i:INTEGER;
begin
kt:=false;
if n<2 then exit;
for i:=2 to trunc(sqrt(n)) do
if n mod i = 0 then exit;
kt:=TRUE;
end;
begin
assign(f1,'input.inp');
reset(f1);
assign(f2,'output.out');
rewrite(f2);
readln(f1,n);
for i:=1 to n do
readln(f1,a[i]);
for i:=1 to n do
begin
for m:=2 to a[i] div 2 do
if kt(m) then
for p:=2 to a[i] do
if kt(p) then
if a[i]=m+p then begin
write(f2,m);
write(f2,' ');
write(f2,p);
writeln(f2);

Output
35
57
23

end;
end;
close(f1);
close(f2);
readln;
end.

S thn thin
ang tm hiu cc thut ton v s t nhin, Nguyn pht hin ra s t
nhin c rt nhiu tnh cht th v. V d s hon ho c tnh cht: tng cc c
bng 2 ln s , nh s 6, s 24.Nhiu s t nhin khi tm c chung ln
nht vi s o ngc ca n bng 1, nhng s nh th c gi l s thn
thin. Chng hn s 23, s o ngc ca n l 32, hai s ny c c chung ln
nht l 1 nn s 23 l s thn thin v 32 cng l s thn thin.
Yu cu: Cho 2 s t nhin a, b (10<=a<=b<=104). Hy m xem trong on t
a n b c bao nhiu s thn thin.
V d:
D liu vo
Kt qu
Gii thch
19 29
4
l cc s: 19, 23, 25, 29.
tng.
- Cho i chy t a n b. Vi mi gi tr ca i tm s o ngc ca n l j, ri
tm UCLN(i,j). Nu UCLN(i,j)=1 th tng bin m ln 1 n v.
Chng trnh tham kho:
var i,j,d,a,b:longint;
m:byte;
function daonguoc(x:longint):longint;
begin
j:=0;
while x<>0 do
begin
m:=x mod 10;
j:=j*10 +m;
x:=x div 10;
end;
daonguoc:=j;
end;
function ucln(m,n:longint):longint;
begin
while m<>n do
if m>n then m:=m-n else n:=n-m;
ucln:=m;
end;
BEGIN
write(' nhap vao 2 so a, b:');readln(a,b);
d:=0;

i:=a;
while i<=b do
if i mod 10=0 then i:=i+1 {nu i c s hng n v bng 0 th b qua}
else
begin
j:=daonguoc(i);
if ucln(i,j)=1 then
begin
write(i,' ');
d:=d+1;
end;
i:=i+1;
end;
writeln;
write(' co ',d, ' so than thien trong khoang tu ',a, ' den ',b);
readln
END.
program thang;
uses crt;
var a,b,i,dem:longint;
function u(a,b:longint):longint;
var r:longint;
begin
while b<>0 do
begin
r:=a mod b;
a:=b;
b:=r;
end;
u:=a;
end;
function ds(n:LONGINT):LONGINT;
var j,m:longint;
begin
J:=0;
WHILE N<>0 do
begin
m:= n mod 10;
j:=10*j+m;
n:=n div 10;
end;
ds:=j;
end;
begin

clrscr;
dem:=0;
repeat
write('nhap a = ');
readln(a);
write('nhap b = ');
readln(b);
until
(a>=10) and (b>=a) and (10000>=b);
for i:=a to b do
if u(i,ds(i))=1 then
dem:=dem+1;
write('Co:',dem:3,' so') ;
readln;
end.

S t nhin nh nht
Nam mt ngi bn ca Nguyn ang tm cch gii mt bi ton lin quan
ti s t nhin v cn s gip ca Nguyn, nhng th thch ln ny l mt
dy gm N s t nhin bt k nm trong on t 0 ti 109, tm s t nhin nh
nht khng c trong dy s . V s lng cc s t nhin trong dy s cho
c th ln ti 106 phn t nn vic tm th cng l khng th m cn mt thut
ton ci t vo my tnh v nh my tnh tm gip.
Yu cu: cho mt dy A gm N (1<=N<=106) s t nhin. Hy tm s t
nhin nh nht khng xut hin trong dy A.
V d:
D liu vo
Kt qu
N=5
0
Dy s: 5 4 2 3 1
N=9
5
Dy s: 2 4 0 3 1 2 6 2 8
tng: trc ht sp xp dy s thnh dy khng gim. Kim tra nu phn
t a[1]<>0 th s t nhin nh nht chnh l s 0, ngc li ta tin hnh duyt
t u n cui dy tm s nm sau s cch qung trong dy tng.
Program sotunhiennhonhat;
var a:array[1..10000] of longint;
tg,i,j,n:longint;
begin
write('nhap N=');readln(N);
for i:=1 to n do
begin
write(' nhap phan tu thu ',i,':');
readln(a[i]);

end;
for j:= N downto 2 do
for i:=1 to j-1 do
if a[i]>a[i+1] then
begin
tg:=a[i];
a[i]:=a[i+1];
a[i+1]:=tg;
end;
if a[1]<>0 then write(0)
else
begin
i:=1;
while (i<=n-1) and ((a[i]+1=a[i+1]) or (a[i+1]=a[i])) do i:=i+1;
write(a[i]+1);
end;
readln
end.
S PALINDROM
Mt s c gi l Palindrom, nu c t bn tri sang bn phi hoc t bn
phi sang tri u c cng mt s. VD: s 75457 l s Palindrom. D nhin, mt s
c phi l Palindrom hay khng cn ph thuc vo c s biu din. S 17 khng phi
l s Palindrom c s 10, nhng c s 2 th n l s Palindrom (10001)
Yu cu: Hy xc nh xem s cho trc ( h 10) c phi l Palindrom khng
v nu c th c s no. Xt c s trong phm vi t 2 n 16
D liu vo: Cho mt File vn bn PAL.INP, mi dng 1 s nguyn dng h
10. File d liu kt thc bng s 0.
Kt qu: Ghi ra file PAL.OUT, mi dng ca file PAL.INP (tr dng cui cng)
ng vi mt dng ca file PAL.OUT, thng tin bt u bng thng bo YES hoc NO,
nu YES th sau l cc c s cn biu din.
V d:
PAL.INP
17
19
0
PAL.UOT
YES 4 6 16
S NGUYN T GHP
Xt dy A cc s nguyn t 2, 3, 5, 7, 11, 13, 17, 19,...
v dy B gm cc s thu c t dy A bng cch ghp hai s lin tip trong A: 23,
57, 1113, 1719, ...
Trong dy B c nhng phn t l s nguyn t. Chng hn 23, 3137, 8389, 157163...
Cc s nguyn t trong dy B gi l s nguyn t ghp.
Yu cu: Cho trc s nguyn dng K<500, hy tm s nguyn t ghp th K.
Input

Output

program ntg;
uses crt;
var f1,f2:text;
i:longint;
n,dem1:integer;
a:array[1..100] of longint;
function kt(n:longint):boolean;
var i:longint;
begin
kt:=false;
if n<2 then exit;
for i:=2 to trunc(sqrt(n)) do
if n mod i=0 then exit;
kt:=true;
end;
function ntn(n:longint):longint;
var dem,i,x:longint ;
Begin
dem:=0;
x:=1;
repeat
x:=x+1;
if kt(x) then dem:=dem+1;
until dem=n;
ntn:=x;
end;
function cs(n:longint):integer;
var i:integer;
begin
i:=0 ;
repeat
n:=n div 10;
i:=i+1;
until n=0;
cs:=i;
end;
function mu(a,b:longint):longint;
var s,i :longint;
begin
s:=1;
for i:=1 to b do
s:=s*a;
mu:=s;

3137

end;
BEGIN
clrscr;
assign(f1,'input.inp');
assign(f2,'outout.out');
reset(f1);
rewrite(f2);
read(f1,n);
i:=1;
dem1:=0;
repeat
a[i]:=ntn(2*i)+ntn(2*i-1)*mu(10,cs(ntn(2*i)));
if kt(a[i])=true then dem1:=dem1+1;
i:=i+1;
until dem1=n;
write(f2,a[i-1]);
close(f1);
close(f2);
readln;
end.
CT2:
const n=4000;
var dd:array[1..4000] of boolean;
A:array[1..1000] of integer;
B:array[1..500] of longint;
t,i,j,k:longint;
d,m:integer;
f:text;
Procedure doctep;
Begin
Assign(f,'Input.In');
Reset(f);
Read(f,K);
close(f);
Assign(f,'Output.Out');
rewrite(f);
end;
Procedure taomangA;
{mang A la mang chua cac so nguyen to 2, 3, 5,7,...,997...}
Begin
fillchar(dd,sizeof(dd),true);
fillchar(A,sizeof(A),0);
for i:=2 to n do
if (dd[i]) and (i*i<=n) then

begin
j:=i*i;d:=1;dd[j]:=false;
while j<=n do
begin
j:=i*i+d*i;
d:=d+1;
dd[j]:=false;
end;
end;
d:=0;
for i:=2 to n do
if dd[i] then
begin
d:=d+1;
A[d]:=i;
end;
{for i:=1 to m do write(A[i],' ');
writeln;}
end;
Function NT(x:longint):boolean;
var ok:boolean;
y:integer;
Begin
if x<2 then ok:=false
else if x<4 then ok:=true
else
begin
y:=2;
while (y<=sqrt(x)) and (x mod y<>0) do y:=y+1;
if y>sqrt(x) then ok:=true else ok:=false;
end;
nt:=ok;
end;
Procedure TaomangB;{mang B chua cac so nguyen to ghep}
var sochuso,m:byte;
so:longint;
Begin
fillchar(B,sizeof(B),0);
i:=1;j:=0;
While i<d do
Begin
sochuso:=0;so:=a[i];
while so<>0 do
begin
sochuso:=sochuso+1;

so:=so div 10;


end;
t:=A[i];
for m:=1 to sochuso do t:=t*10;
if NT(t+a[i+1]) then
begin
j:=j+1;
B[j]:=t+A[i+1];
end;
i:=i+2;
end;
for i:=1 to j do write(B[i],' ');
end;
BEGIN
doctep;
taomangA;
taomangB;
write(f,b[k]);
close(f);
readln
END.
S NGUYN T RT GN
S nguyn t rt gn ca mt s t nhin n chnh l tng cc c nguyn
t ca n.
V d: n=252=2.2.3.3.7 (n c 3 c nguyn t l 2, 3 v 7)
S nguyn t rt gn ca n l 2+3+7=12
Yu cu: a/ Nhp s t nhin n t bn phm, in ra s nguyn t rt gn
ca n. (1<n<1000000)
b/ Nhp 2 s nguyn a, b khng vt qu 10000 (a<b). In ra
cc s c cng s nguyn t rt gn vi n trong on a n b v s
lng cc s tm c.
V d:
Nhap n: 252
So nguyen to rut gon cua n: 12
Nhap a, b: 1 200
Cac so co cung so nguyen to rut gon voi n:
35 42 84 126 168 175
Co 6 so

program sntrg;
uses crt;
var i,j,n,s:integer;
function kt (n:integer):boolean;
var ok:boolean;
i,t:integer;
begin
ok:=false;

begin
i:=1;
repeat
i:=i+1;
until(n mod i =0 ) or (i*i>n);
if i*i>n then ok:=true
else ok:=false;
end;
kt:=ok;
end;
Begin
write('nhap n=');readln(n);
write('so nguyen to rut gon cua n la :');
s:=0;
for i:=2 to n-1 do
begin
if kt(i) and (n mod i=0) then
s:=s+i;
end;
write(s:2);
readln;
end.
S NGOI DY S
Cho mt dy s A gm cc s nguyn dng: a 1, a2, ., aN (1N 128). Hy
tm tt c cc s nguyn dng nm trong on gia gi tr b nht v gi tr
ln nht ca dy s cho v khng thuc dy s .
D liu vo l tp vn bn SNDS.INP c cu trc nh sau:
- Dng th nht ghi s nguyn N.
- Dng th hai ghi cc s ca dy s A; cc s ghi cch nhau t nht l
mt k t trng.
D liu ra l tp vn bn SNDS.OUT ch c mt dng ghi li cc s tm
c; cc s ghi cch nhau t nht l mt k t trng. Nu khng tm c s
no theo yu cu th ghi s -1.
SNDS.INP
5
13679

SNDS.OUT
2458

Program So_ngoai_day_so;
const fi='SNDS.INP';
fo='SNDS.OUT';
Nmax=128;
Var N:byte;
A:array[1..Nmax] of word;

SNDS.INP
5
13254

SNDS.OUT
-1

i,j,Max,Min,sopt,d:word;
f:text;
(*===================*)
Procedure doctep;
Begin
Assign(f,fi);
reset(f);
Readln(f,N);
For i:=1 to N do read(f,A[i]);
close(f);
End;
(*===================*)
Procedure TimMax_min;
Begin
Max:=a[1]; Min:=A[1];
for i:=2 to N do
begin
if A[i]>Max then Max:=A[i];
if A[i]<Min then Min:=A[i];
end;
end;
(*===================*)
Procedure motep;
begin
Assign(f,fo);
rewrite(f);
end;
(*===================*)
procedure xuli;
Begin
sopt:=0;
for i:=Min to Max do
begin
d:=0;
for j:=1 to N do if i=A[j] then d:=d+1;
if d=0 then write(f,i, ' ') else sopt:=sopt+1;
end;
if sopt=Max-Min+1 then write(f,-1);
end;
(*===================*)
BEGIN
doctep;
motep;
TimMax_Min;
xuli;
close(f);
END.

XY DNG DY S

Cho trc mt dy s A gm N s t nhin a 1,a2,..., aN (1N64). Hy xy


dng dy s B gm N s b1,b2,...,bN, trong bi l s lng cc phn t ng
trc ai m ln hn ai (1iN).
D liu vo: Tp vn bn DAYSO.INP c cu trc:
- Dng u tin ghi s N.
- Dng tip theo ghi dy s A, cc s cch nhau t nht l mt k t
trng.
D liu ra: Tp vn bn DAYSO.OUT ghi dy s B, cc s cch nhau t
nht l mt k t trng.
V d:
Tp DAYSO.INP
7
6135742
program XDDS;
uses crt;
type ma=array[1..30] of integer;
var a:ma ;
f1,f2:text;
i,n,s,t,j,dem:integer;
BEGIN
clrscr;
assign(f1,'DAYSO.INP');
assign(f2,'DAYSO.OUT');
reset(f1);
rewrite(f2);
readln(f1,n);
for i:=1 to n do
read(f1,a[i]);
write(f2,0);
write(f2,' ');
for i:=2 to n do
begin
dem:=0;
for j:=1 to i-1 do
if a[j]>a[i] then dem:=dem+1;
write(f2,dem);
write(f2,' ');
end;

Tp DAYSO.OUT
0111035

close(f1);
close(f2);
readln
end.
CH S TH N
Khi vit cc s t nhin tng dn t 1, 2, 3, lin tip nhau, ta nhn c mt
dy cc ch s thp phn v hn, v d: 123121314151617181920...
Yu cu: Hy tm ch s th N ca dy s v hn trn.
D liu vo t file Number.inp gm mt 4567891011s dng, mi dng ghi mt s
nguyn dng N (N<109).
Kt qu ra file Number.out, vi mi s N c c t file Number.inp, ghi trn
dng tng ng ch s th N ca dy.
V d:
Number.inp
5
10
54

Number.out
5
1
3

Program bai89;
{$A+,B-,D+,E+,F-,G-,I+,L+,N-,O-,P-,Q+,R+,S+,T-,V+,X+}
{$M 16384,0,655360}
Uses crt;
Const fi ='number.inp';
fo ='number.out';
cs:array[1..8] of longint = (9, 180, 2700, 36000, 450000, 5400000, 63000000,
720000000);
Var n : longint;
f,g :text;
Function num(n:longint):char;
var k, so, mu : longint;
s : string;
Begin
k:=1; mu:=1;
while (k<9)and(cs[k]<n) do
begin
n:=n-cs[k];
inc(k); mu:=mu*10;
end;
if mu=1 then so:=n div k
else so:=n div k+mu+ord(n mod k>0)-1;
str(so,s);s:=s[k]+s;
num:=s[n mod k+1];
End;
BEGIN

assign(f,fi); reset(f);
assign(g,fo); rewrite(g);
while not seekeof(f) do
begin
readln(f,n);
writeln(g,num(n));
end;
close(f);
close(g);
END.

TM S
Cho hai s nguyn dng A, X (1 < A < 100; 0 < X < 10 9). Hy tm s
nguyn K ln nht tha mn AK X.
D liu vo: T tp vn bn TIMSO.INP: Cha hai s nguyn theo th
t A, X trn mt dng, gia hai s cch nhau mt k t trng.
D liu ra: Ghi vo tp vn bn TIMSO.OUT: C mt s duy nht l s
nguyn K tm c.
V d:
TIMSO.INP
3 10

TIMSO.OUT
2

SP XP DY
Vit chng trnh nhp vo mt dy s nguyn c n phn t.
a. a nhng phn t l ra u danh sch, nhng phn t chn v cui
danh sch v in kt qu ra mn hnh.
b. Sp xp cc phn t l u danh sch theo th t tng dn, sp xp
cc phn t chn cui danh sch theo th t gim dn. In danh sch ra
mn hnh.
program sx;
uses crt ;
var n,i,k,j,r:integer;
a:array[1..20] of integer;
begin
clrscr;
write('nhap n= ');readln(n);
for i:=1 to n do
begin
write('a[',i,']=');
readln(a[i]);
end;
write('cau a');

for i:=1 to n do
if abs(a[i]) mod 2 = 1 then
for j:=1 to n do
if abs(a[j]) mod 2 = 0 then
begin
k:=a[i];
a[i]:=a[j];
a[j]:=k;
end;
for i:=1 to n do
write(a[i]:4);
writeln;
i:=0;
repeat
i:=i+1 ;
until abs(a[i]) mod 2=0;
r:=i;
for i:=1 to r-1 do
for j:=i +1 to r-1 do
if a[i]>a[j] then
begin
k:=a[i];
a[i]:=a[j];
a[j]:=k;
end;
for i:= r to n-1 do
for j:= i+1 to n do
if a[i]<a[j] then
begin
k:=a[i];
a[i]:=a[j];
a[j]:=k;
end;
write('cau b ');
for i:=1 to n do
write(a[i]:4);
READLN;
end.
Cho dy s A gm N s nguyn a1, a2,, aN. Hy sp xp dy s A
sao cho phn u ca dy l cc phn t c gi tr ln hn a1. Tip n
chnh l a1 v phn cn li l cc phn t khng ln hn a1.
Cch 1:
tng: Tm cc phn t ln hn A1 cho v u dy (s phn t u dy ny
c xc nh bi ch s j). Sau tm v tr ca phn t A1 ri hon i cho
phn t nm sau phn t cui cng ca dy cc phn t ln hn A1 (chnh l
phn t c ch s j).

V d: Cho dy s 5 1 2 4 9 6 8
Qu trnh SX a cc phn t ln hn A1 v u dy ta thu c kt
qu l:
9684512
Lc ny phn t bng A1 nm v tr th 5, ta hon i v tr ny cho phn t
nm sau phn t c gi tr bng 8 (tc hon i phn t th 4 v th 5 cho
nhau) ta c dy SX.
Chng trnh nh sau:
program Sap_xep_day_so;
var
A:array[1..1000] of integer;
tg, i,k,j,n,m: integer;
begin
write(' nhap so phan tu cua day');
readln(n);
For i:= 1 to n do
begin
write('a[',i,']=');
readln(a[i]);
end;
j:=1; k:= n;
m:=a[1];
for i:=2 to n do
If a[i]>m then
Begin
tg:=a[i];
a[i]:=a[j];
a[j]:=tg;
j:=j+1
end;
i:=j;
while a[i]<>m do i:=i+1;
tg:=a[i];
a[i]:=a[j];
a[j]:=tg;
for i:= 1 to n do write(a[i],' ');
readln
End.

Hoc
Program SXday;
Var A:array[1..200] of integer;
N,i,j,max,tg:integer;
Begin
Write( Nhap so N vao:);readln(N);
For i:=1 to N do
Begin
Write( Phan tu thu , i, :);
Readln(A[i]);

End;
Max:=a[1]; j:=0;
For i:=1 to N do
If a[i]>max then
Begin
j:=j+1;
tg:=a[i];
a[i]:=a[j];
a[j]:=tg;
end;
for i:=j+1 to N do
if a[i]=max then
begin
j:=j+1;
tg:=a[i];
a[i]:=a[j];
a[j]:=tg;
end;
writeln( Day vua duoc sap xep la:);
for i:=1 to N do write(a[i], );
readln
end.
Cch 2:
Program SXday;
Var A:array[1..200] of integer;
N,i,j,max,tg:integer;
Begin
Write( Nhap so N vao:);readln(N);
For i:=1 to N do
Begin
Write( Phan tu thu , i, :);
Readln(A[i]);
End;
Max:=a[1]; j:=0;
For i:=1 to N do
If a[i]>max then
Begin
For m:=i downto j+1 do
Begin
tg:=a[m];
a[m]:=a[m-1];
a[m-1]:=tg;
end;
j:=j+1;
end;
for i:=j+1 to N do
if a[i]=max then
begin

Begin
For m:=i downto j+1 do
Begin
tg:=a[m];
a[m]:=a[m-1];
a[m-1]:=tg;
end;
j:=j+1;
end;
writeln( Day vua duoc sap xep la:);
for i:=1 to N do write(a[i], );
realn
end.

Ma trn s
Trong bng vung kch thc MxN (1M,N100) ngi ta nh s cc
vung theo nguyn tc sau:
- tri di cng ca bng vung (v tr (0,0)) c nh s 0.
- Cc cn li c nh s theo nguyn tc lan to t v tr (0,0), ht hng ny
n hng khc, trong mi hng cc c nh s theo th t t tri sang phi
l s nguyn khng m nh nht cha c in vo cc trn hng v ct
cha . .
D liu vo l cc s M, N c nhp t bn phm.
D liu ra l tp vn bn MATRAN.OUT ghi li gi tr s c in vo cc
vung trong bng vung MxN theo cch nh nu.
V d:
D liu vo
M=3
N=4
program matran;
uses crt;
var f2:text;
m,n,i,j:integer;
a:array[1..40,1..40] of integer;
BEGIN
assign(f2,'matran.out');
rewrite(f2);
write('Nhap m,n: ');
readln(m,n);
a[m,1]:=0;
for i:=2 to n do
a[m,i]:=a[m,i-1]+1;
for i:=m-1 downto 1 do
for j:=1 to n do
a[i,j]:=a[i+1,j]+1;
for i:=1 to m do

MATRAN.OUT
2345
1234
0123

begin
for j:=1 to n do
write(f2,a[i,j],' ');
writeln(f2);
end;
close(f2);
END.

DY V CAO
+ nh ngha: Mt s t nhin N. dy s t nhin N l s ch s ca N,
cao s t nhin N l tng cc ch s ca N.
Chng hn: N = 232 th N c dy l 3, cao l 7.
+ Yu cu: Cho trc s t nhin N. Tnh dy v cao ca s t nhin N.
+ D liu vo: T tp vn bn SO.INP ch c 1 dng cha s t nhin N
(1<=N<1016).
+ Kt qu: Ghi ra tp vn bn SO.OUT c dng:
- Dng u tin ghi dy ca s N.
- Dng k tip ghi cao ca s N.
MUA V
C N ngi xp hng mua v, nh s 1 n N theo th t ng trong hng. Thi
gian phc v bn v cho ngi th i l t i. Mi ngi cn mua mt v nhng c
quyn mua ti a 2 v, v th mt s ngi c th nh ngi ng ngay trc mnh
mua h v. Ngi th i nhn mua v cho ngi th i+1 th thi gian mua v cho 2
ngi l ri.
Yu cu: Tnh thi gian nh nht bn v xong cho N ngi.
D liu vo: c t file TICK.INP
Dng th nht ghi s N.

Dng th hai ghi N s nguyn dng t1, t2, , tN

Dng th ba ghi N 1 s r1, r2, , rN-1

D liu ra: Kt qu ghi ra file TICK.OUT


Dng th nht ghi tng thi gian phc v bn v
Cc dng tip theo ghi ch s ca cc khch hng cn ri khi hng, mi
dng 10 s, ngc li nu khng c ai ri khi hng ghi s 0.
Gii hn:
1 < N 2000.
V d:
TICK.INP
5
25784
3 9 10 10
program ticker;

TICK.OUT
17
24

uses crt;
type ma=array[1..30] of integer ;
var a,b,c:ma;
n,i,s,j:integer;
f1,f2:text;
BEGIN
assign(f1,'tick.inp');
assign(f2,'tick.out');
reset(f1);
rewrite(f2);
readln(f1,n);
for i:=1 to n do
read(f1,a[i]);
readln(f1);
for i:=1 to n-1 do
read(f1,b[i]);
s:=0;
j:=1;
i:=1;
b[n]:=a[n]+1;
repeat
if a[i]+a[i+1]>b[i] then
begin
s:=s+b[i];
c[j]:=i+1;
j:=j+1;
i:=i+1;
end
else
s:=s+a[i];
i:=i+1;
until i>=n+1;
writeln(f2,s);
for i:=1 to j-1 do
write(f2,c[i],' ');
close(f1);
close(f2) ;
end.
END.
CT2:
Program Mua_ve;
Var t,r:array[1..2000] of word;
dd:array[1..2000] of boolean;
N,i,tongtg:word;
f:Text;
Procedure doctep;
Begin
Assign(f,'TICK.INP');

reset(f);
readln(f,N);
For i:=1 to N do read(f,t[i]);
readln(f);
For i:=1 to N-1 do read(f, r[i]);
close(f);
Assign(f,'TICK.OUT');
rewrite(f);
end;
Procedure xuli;
Begin
fillchar(dd,sizeof(dd),true);
i:=1; tongtg:=0;
while i<=N-1 do
Begin
if r[i]>t[i]+t[i+1] then
begin
tongtg:=tongtg+t[i];
i:=i+1;
end
else
begin
tongtg:=tongtg+r[i];
dd[i+1]:=false;
i:=i+2;
end;
if i>n-1 then tongtg:=tongtg+t[i];
end;
writeln(f,tongtg);
for i:=1 to N do if not(dd[i]) then write(f,i,' ');
close(f);
end;
BEGIN
doctep;
xuli;
END.
A TIN
Ti mt quc gia X, tin tc tnh bo thu c cho thy qun ch sp m cuc tn
cng quy m. Trm tin n bin gii c ngi phng nga v th bo co tnh
hnh v xin tip vin. Gia tram tin n v th c b tr N trm nga cch u
nhau, khi n mi trm nga, lch c (ngi cm c hiu a tin) c th trao i nga
mi trong trm. Nga ca trm i c th phi ti trm k tip sau thi gian Ti (1iN-1)
gi. Mi con nga u khe c th i mt mch ti tn th m khng thay
i tc .
Hy xc nh khong thi gian ngn nht m tin tc tnh bo c a v ti th
.
D liu vo t tp vn bn DUATIN.INP c cu trc:
- Dng th nht ghi s nguyn dng N (<=10^6).
- Dng th hai ghi N-1 s nguyn dng Ti, cc s ghi cch nhau t nht l

mt k t trng.
V d:
DUATIN.INP
5
2431
program DUATIN;
uses crt;
type ma=array[1..30] of integer;
var a:ma ;
f1,f2:text;
i,n,s,t:integer;

DUATIN.OUT
7

BEGIN
clrscr;
assign(f1,'DUATIN.INP');
assign(f2,'DUATIN.OUT');
reset(f1);
rewrite(f2);
readln(f1,n);
for i:=1 to n-1 do
read(f1,a[i]);
s:=a[1];
t:=a[1];
for i:=2 to n-1 do
begin
if a[i]<t then t:=a[i] ;
s:=s+t;
end;
write(f2,s);
close(f1);
close(f2);
readln;
end.

Thnh tch thi u ca vn ng vin


Trong mt cuc thi u th thao nhiu mn phi hp, c M (M100)
vn ng vin (m s l 1,2,..,M) v c N (N100) mn thi u (m s l
1,2,..,N). Thnh tch thi u (tnh bng im) ca cc vn ng vin c cho
bi bng A cc s nguyn khng m c kch thc M x N trong gi tr ca
phn t hng i (1iM), ct j (1jN) l thnh tch thi u ca vn ng vin i
khi thi u mn th thao j (vn ng vin v mn thi u ta gi qua m s).
Vi K vn ng vin i1, i2, ..., iK v K mn thi j1, j2,...,jK, hy tnh xem
nu vn ng vin ir thi u mn jr (1rK) th K vn ng vin s c c
bao nhiu im.
D liu vo: Tp vn bn TTVDV.INP c cu trc:
- Dng u tin ghi hai s M v N.
- M dng tip theo, mi dng ghi N s nguyn khng m l cc
gi tr ca bng A.

- Dng tip theo ghi s K.


- Dng tip theo ghi K s i1, i2, ..., iK.
- Dng tip theo ghi K s j1, j2, ..., jK.
- Cc s ghi trn mi dng cch nhau t nht l mt k t trng.
D liu ra: Tp vn bn TTVDV.OUT cha s im t c ca K
vn ng vin ni trn:
V d:
Tp TTVDV.INP
34
1325
4312
5321
2
13
24
program thidau;
uses crt;
type ma=array[1..100,1..100] of integer;
var a,b:ma;
m,n,i,k,j,s1,s2:integer;
f1,f2:text;
BEGIN
assign(f1,'ttvdv.inp');
assign(f2,'ttvdv.out');
reset(f1);
rewrite(f2);
readln(f1,m,n);
for i:=1 to m do
begin
for j:=1 to n do
read(f1,a[i,j]);
readln(f1);
end;
readln(f1,k);
for i:=1 to 2 do
begin
for j:=1 to k do
read(f1,b[i,j]);
end;
s1:=0 ;
for i:=1 to 2 do
s1:=s1+a[b[1,i],b[2,i]];
write(f2,s1);
close(f1);

Tp TTVDV.OUT
4

close(f2);
readln
END.

Tham quan khu di tch lch s


Ban qun l ca mt khu di tch lch s nhn c bn ng k tham quan ca N
on khch (c m s l 1..N). V on tham quan no cng mun vo trc nhng
khu di tch ch cho php vo tng on mt. Ban qun l c phng n gii quyt nh
sau: u tin on c nhiu ngi cao tui trc, sau n on c t ngi cao tui
hn, nu s ngi cao tui ca mt s on bng nhau th on no ng k trc s
c tham quan trc. Em hy gip ban qun l sp xp th t cho cc on tham
quan theo phng n trn.
D liu vo: Tp vn bn DTLS.INP gm hai dng:
- Dng 1 cha s N l s on ng k tham quan (N nguyn dng v nh hn
100)
- Dng 2 cha N s t nhin (nh hn 100); s th i (i =1. . . N) th hin s
ngi cao tui ca on khch i; th t ca s i trong dy s cng chnh l th t
ng k tham quan ca on khch i.
D liu ra: Tp vn bn DTLS.OUT cha duy nht mt dng gm N s th hin
th t cc on vo thm quan khu di tch.
Cc s trn cng mt dng ca tp d liu vo v d liu ra ghi cch nhau t
nht mt k t trng.
V d:

DTLS.INP
4
10 15 10 9

program tq;
uses crt;
type ma=array[1..30] of integer;
var a:ma ;
f1,f2:text;
i,n:integer;
function max(n:integer;a:ma):integer;
var i:integer;
begin
max:=1 ;
for i:=2 to n do
if a[i]>a[max] then max:=i;
end;
BEGIN
clrscr;
assign(f1,'DTLS.INP');
assign(f2,'DTLS.OUT');
reset(f1);
rewrite(f2);

DTLS.OUT
2 1 3 4

readln(f1,n);
for i:=1 to n do
read(f1,a[i]);
for i:=1 to n do
begin
write(f2,max(n,a));
write(f2,' ');
a[max(n,a)]:=-1;
end;
close(f1);
close(f2) ;
readln;
END.

Quan h tip xc
nm bt c tnh hnh ly nhim mt vng dn c b bnh dch
truyn nhim, ngi ta chia cc c dn sinh sng trong vng thnh 3 nhm
v tm hiu mc quan h tip xc. Nhm th nht gm K ngi b mc
bnh. Nhm th hai gm L ngi. Quan h tip xc ca cc c dn gia nhm
th nht v nhm th hai c th hin bi bng A c K hng v L ct. Gi tr
v tr hng i (1iK), ct j (1iL) ca bng A s bng 1 nu ngi th i
trong nhm th nht c tip xc vi ngi th j trong nhm th hai; bng 0 nu
ngc li. Nhm th ba gm M ngi v quan h tip xc ca cc c dn gia
nhm th hai v nhm th ba c th hin bi bng B c L hng v M ct.
Gi tr v tr hng i (1iL), ct j (1iM) ca bng B s bng 1 nu ngi
th i trong nhm th hai c tip xc vi ngi th j trong nhm th ba; bng 0
nu ngc li. Em hy gip cc bc s thit lp bng thng tin m t quan h
gin tip gia nhm ngi th nht v nhm ngi th ba qua nhm ngi th
hai, bit rng gi tr ti hng i, ct j ca bng ny bng 1 nu ngi th i ca
nhm ngi th nht c tip xc vi ngi th j ca nhm ngi th ba qua
mt ngi no ca nhm ngi th hai; bng 0 nu ngc li.
D liu vo: Tp vn bn QUANHE.INP c cu trc:
- Dng u tin ghi hai s nguyn dng K v L (K,L100).
- K dng tip theo, mi dng ghi L s 0 hoc 1 l cc gi tr ca
bng A.
- Dng tip theo ghi s nguyn dng M (M 100).
- L dng tip theo, mi dng ghi M s 0 hoc 1 l cc gi tr ca
bng B.
- Cc s ghi trn mi dng cch nhau t nht l mt k t trng.
D liu ra: Tp vn bn QUANHE.OUT cha bng thng tin m t
quan h gin tip gia nhm ngi th nht v nhm ngi th ba qua nhm
ngi th hai :
V d:

Tp QUANHE.INP
23
110
010
4
1001
0101
0010
program QUANHE;
uses crt;
type ma=array[1..100,1..100] of integer;
var a,b,c:ma;
m,k,l,i,j,s1,q:integer;
f1,f2:text;
BEGIN
assign(f1,'quanhe.inp');
assign(f2,'quanhe.out');
reset(f1);
rewrite(f2);
readln(f1,k,l);
for i:=1 to k do
begin
for j:=1 to l do
read(f1,a[i,j]);
readln(f1);
end;
readln(f1,m);
for i:=1 to l do
begin
for j:=1 to m do
read(f1,b[i,j]);
readln(f1);
end;
for i:=1 to k do
for q:=1 to m do
begin
c[i,q]:=0;
for j:=1 to l do
if a[i,j]*b[j,q]=1 then c[i,q]:=1
end;
for i:=1 to k do
begin
for q:=1 to m do
write(f2,c[i,q]:2);

Tp QUANHE.OUT
1101
0101

writeln(f2);
end;
close(f1);
close(f2);
readln;
end.
CT2:
var k,x,n,l,m,i,j:integer;
a,b:array[1..50,1..50] of integer;
f,g:text;
begin
assign(f,'quanhe.inp');
assign(g,'quanhe.out');
reset(f);
rewrite(g);
readln(f,k,l);
for i:=1 to k do
begin
for j:=1 to l do read(f,a[i,j]);
readln(f);
end;
readln(f,m);
for i:=1 to l do
begin
for j:=1 to m do read(f,b[i,j]);
readln(f);
end;
for i:=1 to k do
begin
for j:=1 to m do
begin
n:=0;
for x:=1 to l do
if (a[i,x]=1) and (b[x,j]=1) then n:=1;
write(g,n,' ');
end;
writeln(g);
end;
close(f);
close(g);
end.

Hnh ch nht trong li vung


Trong li vung kch thc NxN (N100) ngi ta to mt s hnh ch
nht bng cch nh v mt s lin tip k nhau, cc hnh ch nht ny tng
i mt khng giao nhau (vic giao nhau xt ti n v im ca cc ng
bin trn cc cnh). Ngi ta dng mt bng vung A c kch thc NxN

m t thng tin v cc hnh ch nht trong li vung, gi tr ca cc phn t


trong bng ny c xc nh nh sau:
Gi tr ca phn t thuc hng i, ct j ca bng A bng 1 nu vung hng
i, ct j ca li vung cho thuc mt hnh ch nht no , bng 0 nu
ngc li.
D liu vo: Tp vn bn HCN.INP c cu trc:
- Dng th nht ghi s nguyn dng N.
- N dng tip theo, mi dng ghi N s 0 hoc 1 lin tip nhau l gi tr
ca cc phn t ca bng A.
D liu ra: Tp vn bn HCN.OUT c cu trc:
- Dng th nht ghi s M l s hnh ch nht c trong li vung.
- M dng tip theo, mi dng ghi bn s p, q, r, s cch nhau t nht l
mt k t trng vi ngha: Cp s p,q l ta nh tri trn v r,s l ta
nh phi di ca mt hnh ch nht no trong M hnh ch nht trong li
vung.
V d:
Tp HCN.INP
4
0111
0111
0000
1111
Var a:array[1..50,1..50] of char;
st:array[1..50] of string;
b:array[1..50,1..50] of integer;
n,d,k,x,m,i,l,j:integer;f,g:text;
begin
assign(f,'hcn.inp');reset(f);
assign(g,'hcn.out');rewrite(g);
readln(f,n);
for i:=1 to n do readln(f,st[i]);
for i:=1 to n do
for j:=1 to n do a[i,j]:=st[i][j];
writeln(n);
for i:=1 to n do
begin
for j:=1 to n do write(a[i,j]:3);
writeln;
end;
writeln;
i:=1;d:=0;
While i<=n do
begin
j:=1;
while j<=n do
begin

Tp HCN.OUT
2
1224
4144

if a[i,j]='1' then
begin
d:=d+1;
b[i,j]:=d;
k:=i;
x:=j;
m:=j;
while (k<=n) and (a[k,m]='1') do
begin
while (a[k,x]='1') and (x<=n) do x:=x+1;
k:=k+1;
end;
b[k-1,x-1]:=d;
break;
end
else j:=j+1;
end;
i:=k+1;
end;
writeln;
writeln(g,d);
for k:=1 to d do
begin
for i:=1 to n do
for j:=1 to n do
if b[i,j]=k then write(g,i:3,j:3);
writeln(g);
end;
close(f);
close(g);
end.

Thi ting ht
Trong mt cuc thi ting ht hc sinh c M th sinh tham gia (c s hiu l: 1, 2,
, M). Ban gim kho cuc thi gm N ngi (c s hiu l: 1, 2, , N). Kt qu thi
ca mi th sinh l trung bnh cng im ca cc thnh vin trong ban gim kho cho
th sinh (lm trn n mt ch s thp phn). Bit im ca cc thnh vin trong
ban gim kho cho mi th sinh, hy xc nh th sinh c thnh tch cao nht.
D liu vo l tp vn bn TTH.INP c cu trc:
- Dng u tin ghi hai s nguyn dng M v N (1M,N100).
- M dng tip theo, dng th i (1iM) ghi N s l im ca cc thnh
vin ban gim kho cho th sinh i theo v tr tng ng (v tr th nht ca
dng ghi im ca gim kho 1, ., v tr th N ghi im ca gim kho N).
- Cc s trn mi dng ghi cch nhau t nht l mt k t trng.
D liu ra l tp vn bn TTH.OUT ch c mt dng ghi s hiu th sinh t
thnh tch cao nht v kt qu thi ca th sinh ; cc s ghi cnh nhau t nht l mt
k t trng.
V d:
TTH.INP
TTH.OUT
34
2 3.5
1142

5234
1123

Program THI_TIENG_HAT;
Const fi='TTH.INP';
fo='TTH.OUT';
Nmax=100;
Mmax=100;
Var A:array[1..Mmax] of real;
tong,tb,x,Max:real;
i,j,M,N,cs:integer;
f:text;
(*==========================*)
Procedure doctep;
begin
Assign(f,fi);reset(f);
Readln(f,M,N);
for i:=1 to M do
begin
tong:=0;
for j:=1 to N do
Begin
Read(f,x);
tong:=tong+x;
end;
tb:=tong/N; A[i]:=tb;
readln(f);
end;
close(f);
end;
(*==========================*)
Procedure motep;
Begin
Assign(f,fo);
Rewrite(f);
end;
(*==========================*)
Procedure xuli;
Begin
Max:=A[1]; cs:=1;
for i:=2 to M do if A[i]>Max then
Begin
Max:=A[i];
cs:=i;
end;
write(f,cs,' ',Max:3:1);
close(f);
end;

(*==========================*)
BEGIN
doctep;
motep;
xuli;
END.

T chc tham quan


Trong t t chc i tham quan danh lam thng cnh ca thnh ph H Ch
Minh, Ban t chc hi thi Tin hc tr t chc cho N on ( nh t s 1 n N) mi
on i thm quan mt a im khc nhau. on th i i thm a im cch
Khch sn Hong di km (i=1,2,...., N). Hi thi c M xe taxi nh s t 1 n M
(MN) phc v vic a cc on i thm quan. Xe th j c mc tiu th xng l
vj n v th tch/km.
Yu cu: Hy chn N xe phc v vic a cc on i thm quan, mi xe ch phc
v mt on, sao cho tng chi ph xng cn s dng l t nht.
D liu: File vn bn P2.INP:
- Dng u tin cha hai s nguyn dng N, M (NM200);
- Dng th hai cha cc s nguyn dng d1, d2, ..., dN;
- Dng th ba cha cc s nguyn dng v1, v2, ..., vM.
- Cc s trn cng mt dng c ghi khc nhau bi du trng.
Kt qu: Ghi ra file vn bn P2.OUT:
- Dng u tin cha tng lng xng du cn dng cho vic a cc on i thm
quan (khng tnh lt v);
- Dng th i trong s N dng tip theo ghi ch s xe phc v on i (i=1, 2, ..., N).
V d:
P2.INP
34
759
17 13 15 10

program To_chuc_tham_quan;
uses crt;
type ma=array[1..200] of integer;
var
f1,f2:TEXT;
m,n,i,j,tg,s:integer;
a,b,c:ma;
BEGIN

P2.OUT
256
2
3
4

assign(f1,'p2.inp');
assign(f2,'p2.out');
reset(f1);
rewrite(f2);
readln(f1,n,m);
for i:=1 to n do
read(f1,a[i]);
readln(f1);
for i:=1 to m do
read(f1,b[i]);
for i:=1 to n-1 do
for j:=i+1 to n do
if a[i]<a[j] then
begin
tg:=a[i];
a[i]:=a[j];
a[j]:=tg;
end;
for i:=1 to m do
c[i]:=b[i];
for i:=1 to m-1 do
for j:=i+1 to m do
if b[i]>b[j] then
begin
tg:=b[i];
b[i]:=b[j];
b[j]:=tg;
end;
s:=0;
for i:=1 to n do
s:=s+a[i]*b[i];
writeln(f2,s);
for i:=1 to m do
for j:=1 to n do
if c[i]=b[j] then
begin
writeln(f2,i);
break;
end;

close(f1);
close(f2);
Readln
END.

CHY VIT D
Trong mt cuc thi chy vit d c N i tham gia (c s hiu l 1, 2, ..., N),
mi i c M vn ng vin (c s hiu 1, 2, ..., M). Thi gian chy ca vn ng
vin th j ca i i l Tij giy (0 < i <= N v 0 < j <= M). Hy xc nh tt c cc i
c thnh tch tt nht (l nhng i c tng thi gian ca cc vn ng vin trong i
l t nht).
D liu vo c cho bi tp vn bn Bai3.INP c cu trc:
- Dng u tin cha 2 s nguyn dng N, M.
- N dng tip theo, mi dng cha M s nguyn dng l thi gian chy ca
cc vn ng vin trong i tng ng vi dng .
D liu ra l s hiu ca cc i c thnh tch tt nht c lu vo tp Bai3.OUT.
V d:
Tp Bai3.INP
Tp Bai3.OUT
43
3
146
4
352
321
123
program chayvietda;
uses crt;
type ma=array[1..100,1..100] of integer;
ma1=array[1..100] of integer;
var f1,f2:text;
a:ma;
b:ma1;
i,n,dem,m,j:integer;
function tongd(a:ma;i,m:integer):integer;
var j,s:integer;
begin
s:=0;
for j:=1 to m do

s:=s+a[i,j];
tongd:=s;
end;
function min(b:ma1;n:integer):integer;
var i,mi:integer;
begin
mi:=b[1];
for i:=2 to n do
if b[i]<mi then mi:=b[i];
min:=mi;
end;
BEGIN
assign(f1,'vietda.inp');
assign(f2,'vietda.out');
reset(f1);
rewrite(f2);
readln(f1,n,m);
for i:=1 to n do
begin
for j:=1 to m do
read(f1,a[i,j]);
readln(f1)
end;
for i:=1 to n do
b[i]:=tongd(a,i,m);
for i:=1 to n do
if b[i]=min(b,n) then writeln(f2,i);
close(f1);
close(f2);
end.

TR CHI
Tr chi bc ko l tr chi cho 2 i th. Ngi ta xp N ti ko vng quanh
mt chic bn trn v nh s lin tip theo chiu kim ng h t 1 n N bt u t
mt ti ko bt k. Ti th i c a i ci ko. Hai i th lun phin thc hin nc i,
mi nc i phi ly 1 ti ko. i th th nht, l ngi thc hin nc i u tin,
c chn v ly 1 trong N ti ko. Tip theo, i th n lt thc hin nc i phi
chn ti ko st cnh v tr ti ko m i th thc hin nc i ngay trc va
ly. Tr chi kt thc khi trn mt bn khng cn ti ko no c.
Yu cu: Cho bit ch s ca ti ko m i th nht ly i trong nc i u
tin. Hy tnh tng s ko ln nht m i th th hai c th ly c khi tham gia tr
chi ny.
D liu: Vo t file vn bn GAME.INP
- Dng u tin cha s lng ti ko N ( 1 N 1000).
- Dng th hai cha s nguyn dng k l ch s ca ti ko m i th th
nht chn v ly trong nc i u tin.
- Dng th i trong s N dng tip theo cha s nguyn dng ai (ai32767),
i = 1, 2, ... N.
Kt qu: Ghi ra file vn bn GAME.OUT tng s ko ln nht tm c.
V d:

GAME.INP
5
1
2
2
3
9
5

GAME.OUT
11

XP KHCH
Mt khch dn c N phng i (phng cho 2 ngi) c nh s t 1 n N.
Khi c mt on khch n thu phng, tip tn ca khch sn s xp khch vo
phng theo quy tc sau: Mi cp khch s c xp vo phng c ch s nh nht
trong s cc phng trng. Nu s lng khch ca on l s l th ngi cui cng
ca on khch s c xp vo phng c ch s nh nht trong s cc phng trng.
Nu khng cn phng trng, th s khch cha c phng s c xp tun t tng
ngi mt vo phng c ch s nh nht trong s cc phng mi c mt khch (ca
on khch n trc). u tin tt c cc phng ca khch sn l trng.
Yu cu: Cho trc trnh t n ca cc on khch v s lng khch ca mi
on. Hy xc nh s lng khch trong mi phng ca khch sn.
D liu: Vo t file vn bn ROOM.INP:

Dng u tin cha 2 s nguyn dng N ( 1 N 100) v G c ghi


cch nhau bi du cch. N l s phng ca khch sn, G l s lng on
khch.
- Dng th i trong s G dng tip theo cha s lng khch ca on khch
th i (cc on khch c nh s theo th t n khch sn bt u t 1).
Gi thit rng khng c 2 on khch no n khch sn vo cng mt thi
im v tng s khch ca tt c cc on khng vt qu sc cha ca khch sn (
2N).
-

Kt qu: Ghi ra file vn bn ROOMS.OUT N dng: Dng th i cha s lng


khch ca phng i (1 i N).
V d:
ROOMS.INP
7 3
3
1
4

ROOMS.OUT
2
1
1
2
2
0
0

D tr nc
min Trung thng nm no cng c nhng t hn hn nn ng Nam
c nhng thng d tr nc. Do mua lm nhiu t nn N (1 N 1000)
thng cha nc ca ng Nam c kch thc khc nhau, mi thng c sc cha
Ci (1 Ci 10000, 1 i N). D on rng nm nay s c t hn hn ln
nn ng Nam mun y nc ht cc thng d tr. Sau khi kim tra ng
Nam thy rng c mt s thng vn cn y, mt s khc th vi i mt phn,
cn mt s th ht. ng quyt nh cc thng no cha y th s ch i
y nc. Nhng do ni ly nc rt xa, v mi ln ch ch i c 1 thng
nn ng quyt nh s san nc gia cc thng vi nhau s thng phi ch
i l t nht.
Yu cu: Cho dung lng nc hin c ca thng th i l Bi (0 Bi Ci, 1
i
N), hy gip ng Nam xc nh s lng thng t nht phi mang i.
D liu: vo t file vn bn WATER.INP c dng sau:
- Dng th nht ghi mt s t nhin N l s lng cc thng nc.
- Dng th i trong N dng tip theo mi dng c 2 s nguyn Bi v Ci (0 Bi
Ci) m t thng tin thng th i, vi Bi l nc cn trong thng v Ci l sc
cha ca thng, cc s cch nhau t nht mt khong trng.
Kt qu: ghi ra file vn bn WATER.OUT cha mt s l s lng t nht cc
thng nc tm c.
V d:
WATER.INP
WATER.OUT
4
1
01

45
02
12
tng: Rt n gin nh sau:
- u tin ta lu cc gi tr Bi v Ci vo 2 mng 1 chiu .
- Tip theo sp xp mng C theo th t tng dn.
- Tip theo tnh tng cc phn t ca mng B ri a cc phn t ca mng B
v 0.
- Sau ta ly tng tnh c ca mng B, em tr i cho cc phn t ca
mng C (tr t u n cui mng C), cho n khi no gi tr tng nh hn
phn t tip theo phn t hin ti ca mng C hoc tng bng 0 th dng.
- Cui cng ch vic m xem trong mng B c bao nhiu phn t bng 0.
chnh l kt qu ca bi ton.
Chng trnh c th nh sau:
Program water;
var f1,f2:text;
n:byte;
b,c:array[1..100] of byte;
procedure doctep;
var i:byte;
begin
assign(f1,'c:\water.inp');reset(f1);
assign(f2,'c:\water.out');rewrite(f2);
readln(f1,n);
for i:=1 to n do readln(f1,b[i],c[i]);
end;
procedure xuli;
var i,j,tg,dem,dau,tong:integer;
begin
for j:=n downto 2 do
for i:=1 to j-1 do
if c[i]>c[i+1] then
begin
tg:=c[i];c[i]:=c[i+1];c[i+1]:=tg;
end;
tong:=0;
for i:=1 to n do tong:=tong+b[i];
for i:=1 to n do b[i]:=0;
dau:=1;
while tong>0 do
begin
if tong>=c[dau] then
begin
tong:=tong-c[dau];
dau:=dau+1;

b[dau]:=9;
end
else tong:=0;
end;
dem:=0;
for i:=1 to n do
if b[i]=0 then dem:=dem+1;
writeln(f2,dem);
close(f1);close(f2);
end;
begin
doctep;
xuli;
end.

B tr xe
Va qua k thi my tnh cm tay cp quc gia c t chc ti Nam
nh. Ban t chc b tr xe t a mi on hc sinh ca mi Tnh i
tham quan cc a im khc nhau. C tt c n on hc sinh nh s t 1 n
n, on th i cn i ti a im cch n v di (coi nh l khong cch tnh
theo c chiu i v v). C m chic xe t s dng c nh s t 1 n m
(m>=n) c th dng phc v a cc on i tham gia. c bit xe th j c
mc tiu th xng l V[j] n v th tch xng trn mt n v di. Hy la
chn v b tr n xe, mi xe ch phc v mt on theo yu cu sao cho tng th
tch xng cn thit l t nht.
D liu vo: Tp vn bn XE.INP c cu trc:
- Dng 1: cha 2 s nguyn dng n, m (1<=n<=m<=200)
- Dng 2: cha n s d1, d2, d3, , dn
- Dng 3: Cha m s v1, v2, , vm
D liu ra: Tp vn bn XE.OUT, cha 2 dng
- Dng 1: cha s lng xng cn t nht theo yu cu.
- Dng 2: cha n s x1, x2, ...,xn th hin on th i c b tr i xe x[i].
V d:
XE.OUT
XE.INP
27
35
385
142
32415
Cch 1:
Program Botrixethamquan;
var f1,f2:text;
a,b,a1,b1:array[1..200] of integer;
i,j,m,n,s:integer;
c:array[1..100] of boolean;
procedure nhap;

begin
assign(f1, 'xe.inp');
reset(f1);
assign(f2, 'xe.out');
rewrite(f2);
readln(f1,m,n);
for i:=1 to m do
begin
read(f1,a[i]);
a1[i]:=a[i];
end;
readln(f1);
for i:=1 to n do
begin
read(f1,b[i]);
b1[i]:=b[i];
end;
fillchar(c,sizeof(c),true);
end;
procedure xuli;
var tg:integer;
k:byte;
begin
for j:=m downto 2 do
for i:=1 to j-1 do
if a1[i]<a1[i+1] then
begin
tg:=a1[i];
a1[i]:=a1[i+1];
a1[i+1]:=tg;
end;
for j:=N downto 2 do
for i:=1 to j-1 do
if b1[i]>b1[i+1] then
begin
tg:=b1[i];
b1[i]:=b1[i+1];
b1[i+1]:=tg;
end;
s:=0;
for i:=1 to m do s:=s+a1[i]*b1[i];
writeln(f2,s);
for i:=1 to m do
for j:=1 to m do
if a[i]=a1[j] then

begin
for k:=1 to n do if (b[k]=b1[j]) and (c[k]) then
begin
write(f2,k,' ');
c[k]:=false;
end;
break;
end;
end;
Begin
nhap;
xuli;
close(f2)
end.

By tranh
Cho n bc tranh m s t 1 n n. Ngi ta cn chn ra mt bc tranh
treo ca phng tranh, s cn li c treo thng hng trong phng ti m v
tr nh sn m s t 1 n m t tri qua phi, cc tranh phi c treo theo trt
t nghim ngt sau y:
Tranh c s hiu nh phi c treo bn tri tranh c s hiu ln. Bit cc
thng tin v bc tranh:
- Tranh th i treo ti ca s s t gi tr thm m C[i];
- Tranh th i theo ti v tr j s t gi tr thm m V[i,j];
- n<=m+1; m<=50
- Cc gi tr thm m l nhng s t nhin khng vt qu 50. Hy xc
nh 1 phng n treo tranh c tng gi tr thm m ln nht.
D liu vo: Cho trong tp tin vn bn TRANH.INP.
- Dng th 1: cha 2 gi tr n, m.
- Dng tip theo: l n gi tr c[1], c[2],,c[n].
- Tip n l n dng, dng th i gm m gi tr v[i,1], v[i,2],,v[i,m]. Cc
s trn cng 1 dng cch nhau 1 du cch.
D liu ra: Ra trong tp tin vn bn TRANH.OUT.
- Dng th 1: gi tr thm m ln nht tm c
- Dng th 2: m s bc tranh treo ca phng tranh
- T dng th 3 tr i gm n-1 s t nhin sp xp tng dn biu th m
s cc v tr c chn treo tranh trong phng. Cc s trong cng
dng cch nhau bi du cch.
V d:
TRANH.OUT
TRANH.INP
40
34
2
1 20 1
24
1 10 1 3
2122
1 3 0 10

Chng trnh:
program tranh;
const
FI='TRANH.INP';
FO='TRANH.OUT';
type
ma=array[1..100] of byte;
ma2=array[1..50,1..50] of byte;
var c,kq:ma;
v:ma2;
m,n,tong,maso:byte;
procedure doctep;
var i,j:byte;
f:text;
begin
assign(f,fi);
reset(f);
readln(f,n,m);
for i:=1 to n-1 do read(f,c[i]);
readln(f,c[n]);
for i:=1 to n do
for j:=1 to m do
read(f,v[i,j]);
close(f);
end;
procedure xuli;
var i,j,tg,l:byte;
begin
tong:=0; l:=0;
for i:=1 to n do if c[i]>tong then
begin
tong:=c[i];
maso:=i;
end;
for i:=1 to n do
begin
if i<>maso then
begin
tg:=0; l:=l+1;
for j:=1 to m do if v[i,j]>tg then
begin
tg:=v[i,j];
kq[l]:=j;
end;
tong:=tong+tg;
end;

end;
end;
procedure inkq;
var i:byte;
f:text;
begin
doctep;
xuli;
assign(f,fo);
rewrite(f);
writeln(f,tong);
writeln(f,maso);
for i:=1 to n-1 do write(f,kq[i],' ');
close(f);
end;
BEGIN
INKQ;
END.

ng i
S ng i gia N a im (c s hiu l 1,2,,N) trong thnh ph
X c cho bi bng vung A kch thc NxN. Mi phn t ca bng A ch c
th l s 0 hoc s 1. Nu phn t hng i, ct j ca bng A m bng 1 th c
ng i t a im i ti a im j, ngc li nu khng c ng i
(1<=i,j<=N).
Hy lit k tt c cc ng i khc nhau gia 2 a im P v Q trong thnh
ph X. S hiu ca mi a im xut hin trn mi ng i khng qu 1 ln.
D liu vo: tp vn bn DUONG.INP c cu trc:
- Dng u tin ghi s N (0<=N<=100).
- N dng tip theo, mi dng ghi N s l cc gi tr ca bng A.
- Dng cui cng ghi 2 s P, Q.
- Cc s trn mi dng ghi cch nhau t nht l mt k t trng.
D liu ra: tp vn bn DUONG.OUT ghi li cc ng i c th c gia hai
a im P v Q. Mi ng i ghi trn mt dng. Nu khng c ng i gia
2 a im P v Q th ghi thng bo khng c ng i.
V d:
DUONG.INP
DUONG.OUT
3
1->2->3
011
1->3
101
110
13
PROGRAM DUONG_DI;
Var f1,f2:text;
n,x,y:byte;

ketqua:boolean;
k:array[1..100] of boolean;
l:array[1..100] of byte;
a:array[1..100,1..100] of byte;
{--------------------------------------}
PROCEDURE DOCTEP;
Var i,j:integer;
Begin
Assign(f1,'c:\DUONG.INP');reset(f1);
Assign(f2,'c:\DUONG.OUT');rewrite(f2);
Readln(f1,n);
For i:=1 to n do
begin
for j:=1 to n do Read(f1,a[i,j]);
Readln(f1);
end;
Readln(f1,x,y);
End;
{----------------------------------------}
PROCEDURE TAOMANG;
Begin
Fillchar(k,sizeof(k),true);
Fillchar(l,sizeof(l),0);
k[x]:=false;
l[1]:=x;
ketqua:=false;
End;
{-----------------------------------------}
PROCEDURE INRA(t:byte);
Var i:byte;
Begin
ketqua:=true;
For i:=1 to t-1 do
Write(f2,l[i],'->');
Write(f2,l[t]);
Writeln(f2);
End;
{-------------------------------------------}
PROCEDURE XULI(m:byte);
Var i:byte;
Begin
if l[m-1]=y then inra(m-1) else
for i:=1 to n do
if (k[i]) and (a[l[m-1],i]<>0) then
begin
k[i]:=false;

a[l[m-1],i]:=0;
a[i,l[m-1]]:=0;
l[m]:=i;
xuli(m+1);
k[i]:=true;
a[l[m-1],i]:=1;
a[i,l[m-1]]:=1;
l[m]:=0;
end;
End;
{-------------------------------------------}
BEGIN
DOCTEP;
TAOMANG;
XULI(2);
if not ketqua then writeln(f2,'KHONG CO DUONG DI');
Close(f1);Close(f2);
END.
DIN TCH CC HNH
Cho hnh ch nht ABCD c chiu di AB l a (cm), chiu rng AD l b (cm) vi
a, b l cc s nguyn dng khng vt qu 10000. Mt im M trn on BC, mt
im N trn on CD sao cho di (tnh bng cm) cc on BM, CN bng nhau v
l s nguyn khng m.
B
A
M

Yu cu:
1. Bit di BM, tnh din tch hnh ch nht ABCD v din tch tam gic MCN.
2.Tm gi tr ln nht v gi tr nh nht ca din tch tam gic AMN khi M, N thay i.
D liu vo: D liu ca bi ton cho trong tp tin DIENTICH.INP gm ba s a, b, x
(x b a, x l di BM trong yu cu 1) c ghi trn cng mt dng theo ng th
t trn, hai s lin tip cch nhau mt khong trng.
D liu ra: Kt qu ghi ra mn hnh (hoc ghi ra file DIENTICH.OUT) trn 5 dng:
- Dng u l ba s a, b v x.
- Dng th hai l din tch hnh ch nht ABCD.
- Dng th ba l din tch tam gic MCN
- Dng th t l gi tr ln nht ca din tch tam gic AMN
- Dng th nm l gi tr nh nht ca din tch tam gic AMN
(Cc gi tr din tch c ghi trong dng thp phn vi 1 ch s sau du phy).

V d:
DIENTICH.INP
10 6 2

Kt qu trn mn hnh (hoc file DIENTICH.OUT)


10 6 2
60.0
4.0
30.0
17.5

program dt;
uses crt;
var
f1,f2:text;
a,b,x:integer;
s1,s2,min,max,tg :real;
BEGIN
clrscr;
assign(f1,'dientich.inp');
assign(f2,'dientich.out');
reset(f1);
rewrite(f2);
read(f1,a,b,x);
s1:=a*b;
s2:=x*(b-x)/2;
min:=s1/2;
max:=s1/2;
writeln(f2,a,' ',b,' ',x);
for x:=1 to b do
begin
tg:=(s1-(x*a/2+(b-x)*x/2+(a-x)*b/2));
if tg>max then max:=tg;
if tg<min then min:=tg;
end;
writeln(f2,s1:4:1);
writeln(f2,s2:4:1);
writeln(f2,max:4:1);
writeln(f2,min:4:1);
close(f1);
close(f2);
END.

XP GCH.
Minh rt thch tr chi xp cc chic hp c hnh vin gch. Minh t cc vin
gch chng ln nhau v xy thnh nhiu chng c cao khc nhau. Minh khoe vi
ch rng Ch trng, em xy c mt bc tng. Ch ca Minh tr li Em phi
xp cc vin gch c cao ging nhau mi c gi l mt bc tng. Sau khi
nghe ch ni nh vy n cn nhc mt t v cho rng kin y l ng. V vy em bt
u tin hnh sp xp li cc chng gch ln lt tng chic mt cho n khi hon
thnh cng vic. Khi cng vic hon tt, Minh mt l v mun c bn no gip
Minh di chuyn cc vin gch vi s ln t nht.

Cc
chic hp trc v sau khi xp
Yu cu: Hy lp trnh a ra s ln di chuyn t nht ca cc vin gch sao
cho t cc chng gch c cao khc nhau tr thnh cc chng gch c cao bng
nhau; ln lt tng chic mt cho n khi hon thnh cng vic.
D liu vo: c cu trc sau:
-

dng u tin l s n, n l s cc chng gch,


dng tip theo ln lt l cc h i, cao ca chng gch th i. (1# n # 50;
1# hi # 100; i = 1..n). Lu rng s vin gch bao gi cng chia ht cho s
chng gch.

D liu ra: ch c mt dng cha mt s nguyn dng l kt qu tnh ton s


ln t nht sau khi xp li cc chng gch. Nu khng c kt qu cng phi ghi r
KHONG CAN DI CHUYEN LAN NAO
V d: vi hnh trn ta c d liu vo, ra:
Input
6

Output
5

5 2 4 1 7 5
7
9999999

program xep_gach;
uses crt;
type ma=array[1..1000] of integer;
var n,i,max,min,dem,p:integer;

Khong can di chuyen lan nao

a:ma;
f1,f2:text;
ok:boolean;
function kt(a:ma;n:integer):boolean;
var i:integer;
ok:boolean;
begin
ok:=true;
for i:=1 to n-1 do
if a[i]<>a[i+1] then ok:=false;
kt:=ok;
end;
BEGIN
clrscr;
assign(f1,'xepgach.inp');
assign(f2,'xepgach.out');
reset(f1);
rewrite(f2);
readln(f1,n);
p:=0;
for i:=1 to n do
begin
read(f1,a[i]);
p:=p+a[i];
end;
dem:=0;
ok:=kt(a,n);
if ok then write(f2,'Khong can di chuyen lan nao.')
else begin
repeat
min:=1;
max:=1;
for i:=1 to n do
begin
if a[i]>a[max] then max:=i;
if a[i]<a[min] then min:=i;
end;
repeat
a[max]:=a[max]-1;
a[min]:=a[min]+1;
dem:=dem+1;
until a[min]=p/n;
until kt(a,n);
write(f2,dem);
end;

close(f1);
close(f2);
end.
END.

Kim tra dy s
Cho mt dy s gm N phn t a1, a2, a3,...,aN. Vit chng trnh kim tra dy s
sp xp khng gim hay cha. Nu dy s cha c sp xp th hy sp xp dy
s theo th t khng gim.
D liu vo: Tp vn bn DAYSO.INP gm 2 dng
- Dng 1: cha s nguyn dng N (N<=20000)
- Dng 2: cha N phn t ca dy s a1, a2,...,aN.
D liu ra: Tp vn bn DAYSO.OUT
Nu dy s sp xp khng gim th ghi vo tp dng thng bo "dy sp xp"
Ngc li ghi vo tp 2 dng:
- Dng 1: ghi thng bo "dy cha c sp xp
- Dng 2: ghi dy sau khi sp xp li
V d 1:
DAYSO.INP
DAYSO.OUT
10
Day da sap xep
1 3 4 6 7 8 10 11 13 17
V d 2:
DAYSO.INP
DAYSO.OUT
10
Day chua duoc sap xep
5 3 4 6 7 1 10 11 13 17
1 3 4 5 6 7 10 11 13 17

Program Ktra;
Uses crt;
type ma=array[1..200] of integer;
Var f1,f2:text;
n,i:integer;
a:ma ;
kt:boolean;
Procedure sapxep(n:integer;a:ma);
var h,i,j:integer;
Begin
for i:=1 to n-1 do
for j:=I+1 to n do
if a[i]>a[j] then
begin
h:=a[i];
a[i]:=a[j];
a[j]:=h;
end;
writeln(f2);

FOR I:=1 TO N DO
begin
write(f2,a[i]);
write(f2,' ');
end;
End;
BEGIN
clrscr;
assign(f1,'input.inp');
assign(f2,'outout.out');
reset(f1);
rewrite(f2);
readln(f1,n);
for i:=1 to n do
read(f1,a[i]);
kt:=true;
for i:=1 to n-1 do
if (a[i+1]-a[i]<0) then kt:=false ;
if kt then write(f2,'Day da sap xep.')
else begin write(f2,'Day chua duoc sap xep.');
sapxep(n,a);
end;
close(f1);
close(f2);
readln;
END.

i hnh bng
Trong Gii v ch bng chu u nm 2012, i hnh chnh tham gia thi u
ca mi i bng c th hin bi 4 s X, Y, Z, U. Trong X l s th mn, Y l
s cu th hu v, Z l s cu th tin v, U l s cu th tin o. Thng tin v i
hnh chnh tham gia thi u ca i bng B c lu gi trong tp vn bn
DOIHINH.INP gm 11 dng. Mi dng ghi tn mt cu th (khng qu 20 k t),
tip theo l du cch v sau l v tr ca cu th trong i hnh i bng. V tr
ca cc cu th trong i hnh i bng c k hiu bi hai k t: TM (Th mn),
HV (Hu v), TV (Tin v), TD (Tin o).
Hy xc nh i hnh tham gia thi u ca i bng B.
D liu ra l tp DOIHINH.OUT theo cu trc:
Dng u tin ghi 4 s X,Y, Z,U, mi s cch nhau t nht mt k t trng. X dng
tip theo ghi tn th mn, Y dng tip theo ghi tn cc cu th c v tr hu v, Z dng
tip theo ghi tn cc cu th c v tr tin v, U dng tip theo ghi tn cc cu th c
v tr tin o.

Thi u
C m i bng thi u vng trn mt lt. Gi a[i,j] l s bn thng m i i
ghi vo li i j (1<=i,j <=m; ij). Bit tn i bng, thng 3 im, ha 1 im, thua
0 im. Vit chng trnh xc nh i v ch, i bt bng. Nu 2 i bng im
nhau th xt hiu s bn thng, thua.
D liu vo c c t tp BAI4.INP c ni dung:
Dng u ghi s m s i bng tham gia.
Mi dng th i trong m dng tip theo ghi s bn thng m i i ghi vo li
i J mi s cch nhau mt k t trng.
Kt qu a ra vi tn tp BAI4.OUT vi 2 dng:
Dng th nht ghi VODICH tip n l ch s i v ch.
Dng th hai ghi BETBANG tip n l ch s i bt bng.

Tm ng hi qu:
M t khu vn hnh ch nh t kch thc MxN c chia thnh cc vung
n v trng m t loi cy n qu. Trn mi th s qu tng ng c th hi c
l A[i,j] (1iM; 1jN).
M t ngi khch do qua vn v hi tt c cc qu trn nhng i qua. V tr xut
pht t [1,1] v kt thc ti [M,N] vi hnh trnh l sang chung cnh theo hng
tng ca i ho c j (sang phi ho c i xung nh hnh v). Hy vit chng trnh tm
l trnh i ca ngi hi c nhiu qu nht.
1

D li u vo l t p HAIQUA.INP c cu trc nh sau:


- Dng u tin l hai s M, N nguyn dng cch nhau m t khong cch
(0<M,N<100).
- M dng tip theo, mi dng gm N s tng ng l s qu c th hi c cc
theo th t ti hng th i. Mi s cch nhau m t khong cch.
D li u ra l t p HAIQUA.OUT cso cu trc nh sau:
- Dng u l s qu ln nht c th hi c theo m t l trnh tha mn yu cu.
- Dng tip theo gm M+N-1 s tng ng l s qu hi tng theo ng i
c s qu nhiu nht. Mi s cch nhau t nht m t khong cch.
V d:
HAIQUA.INP
HAIQUA.OUT
45
41
13572
17942675
79422
23167

74625
Uses
Const

Var

Crt;
fi='D:\Haiqua.Inp';
fo='D:\Haiqua.Out';
Type m2c=Array[1..100,1..100] of Word;
mmc=Array[1..100] of Word;
i,j,k,m,n,max:Byte;
a:m2c;
b:mmc;
f,g:Text;

Begin
Assign(f,fi);
Reset(f);
Readln(f,m,n);
For i:=1 to m do
Begin
For j:=1 to n do
Read(f,a[i,j]);
Readln(f);
End;
Close(f);
max:=a[1,1];
k:=1;
i:=1; j:=1;
fillchar(b,sizeof(b),0);
b[1]:=max;
While (i<=m) and (j<=n) do
Begin
inc(k);
If a[i+1,j]>a[i,j+1] then
Begin
inc(i);
max:=max+a[i,j];
b[k]:=a[i,j];
End
Else
Begin
If a[i+2,j]>a[i,j+2] then
Begin
inc(i);
max:=max+a[i,j];
b[k]:=a[i,j];
End
Else
inc(j);
max:=max+a[i,j];
b[k]:=a[i,j];
End;
End;
Dec(k);

Assign(g,fo);
Rewrite(g);
Writeln(g,max);
For i:=1 to k do
Write(g,b[i],' ');
Close(g);
End.

Cht lng sn phm


Trong mt nh my ch bin N loi sn phm lng thc, thc phm c s
hi l 1, 2, N (N l s nguyn dng v N <=100). Mi loi sn phm c
khng qu N sn phm. Ngi ta phn loi tt c cc sn phm thnh M mc
cht lng khc nhau c s hiu l 1, 2, M (M l s nguyn dng v
M<=N). nh gi v nhn nhn li qu trnh sn xut kinh doanh, ban lnh
o nh my cn phi bit c s lng sn phm tng mc cht lng,
ng thi cng cn phi bit mc cht lng no c s lng sn phm l
nhiu nht v s lng sn phm nhiu nht l bao nhiu?
Hy gip ban lnh o nh my gii p cc yu cu trn.
D liu vo: Tp vn bn SANPHAM.INP c cu trc:
- Dng u tin ghi hai s N v M.
- N dng tip theo, mi dng ghi M s to thnh mt bng c kch
thc N x M. Gi tr ca phn t nm trn dng I, ct j ca bng ny
chnh l s lng sn phm loi i c mc cht lng j (1<=i<=N,
1<=j<=M).
- Cc s nghi trn mi dng cch nhau t nht mt k t trng.
D liu ra: Tp vn bn SANPHAM.UOT c cu trc:
- Trong M dng u, dng th d (1<=d<=M) ghi s lng sn phm
c mc cht lng theo dng: Mc cht lng d c sn phm
- Dng thc M+1 ghi hai s cch nhau t nht mt k t trng l ch s
ca mc cht lng c nhiu sm phm nht v s lng sn phm
nhiu nht .
V d:
Vi tp SANPHAM.INP sau y ta phi hiu:
- Loi sn phm 1 c 1 sn phm c mc cht lng loi 1, c 2 sn
phm c mc cht lng loi 4, khng c sn phm c mc cht
lng 2 v 3 (dng thc 2 v 3 ca tp)
- Loi sn phm 2 c 2 sn phm c mc cht lng 2, c 1 sn phm
mc cht lng 3, 1 sn phm c cht lng 4, khng c sn phm
no c cht lng loi 1 (dng th 3 ca tp).
- Loi sn phm 3 c 2 sn phm c mc cht lng 1, c 2 sn phm
mc cht lng 1, 2 sn phm c mc cht lng 4, khng cvos sn
phm no c mc cht lng 2 v 3 (dng thc 4 ca tp)
Tp SANPHAM.INP
Tp SANPHAM.OUT
34
Muc chat luong 1 co 3 san pham
1002
Muc chat luong 2 co 2 san pham
0211
Muc chat luong 3 co 1 san pham
2001
Muc chat luong 4 co 5 san pham
45

Vn ng vin bng bn
Trong bui l b mc hi khe cp thnh ph, vn ng vin cc mn thi
u ng thnh cc hng dc, mi mn t mt hng. Mn bng bn c N vn
ng vin (N<=255). Kt qu thi u (tnh bng im) ca cc vn ng vin
bng bn c cho bi dy s A (A1, A2, ,AN) theo th t tng ng vi v
tr ng trong hng (vn ng vin ng th i trong hng c kt qu thi u l
Ai).
Hy lit k trong hnh cc vn ng vin Bng bn c bao nhiu cp vn
ng vin ng gn nhau m c kt qu thi u ging nhau.
D liu vo: Tp vn bn BONGBAN.INP c cu trc:
- Dng u tin ghi s N
- Dng th 2 ghi dy s A, cc s cch nhau mt k t trng.
D liu ra: Tp vn bn BONGBAN.OUT c cu trc:
- Dng u tin ghi s N.
- Dng th 2 ghi s lng cc cp vn ng vin Bng bn tm c
theo yu cu.
- Cc dng tip theo, mi dng ghi 2 s l s th t ng trong hng
ca cc cp vn ng vin tm c
- Cc s ghi trn mt dng cch nhau t nht mt k t trng.
V d:
Tp BONGBAN.INP
Tp BONGBAN.OUT
5
5
11344
11344
2
12
45
program vdvbb;
uses crt;
var f1,f2:text;
a:array[1..950] of integer;
i,n,dem:integer;
BEGIN
assign(f1,'bongban.inp');
assign(f2,'bongban.out');
reset(f1);
rewrite(f2);
readln(f1,n);
writeln(f2,n);
for i:=1 to n do begin
read(f1,a[i]);
write(f2,a[i],' ');
end;
dem:=0;
writeln(f2);

for i:=1 to n do
if a[i]=a[i+1] then dem:=dem+1;
writeln(f2,dem);
for i:=1 to n do
if a[i]=a[i+1] then writeln(f2,i,' ',i+1);
close(f1);
close(f2);
END.

Tch s:

Ten file chng trnh: Tachso.Pas

Vit chng trnh tch s nguyn dng A (A<200) thnh tng ca hai
s nguyn dng x v y sao cho c chung ln nht d ca x v y l ln nht
trong cc cch phn tch c c.
Yu cu:
D liu vo: File text Tachso.INP ch c 1 dng cha s nguyn
dng A.
D liu ra: File text Tachso.OUT gm 2 dng:
- Dng 1: Ghi s nguyn dng A.
- Dng 2: Ghi ba s nguyn dng x, y, d; Cc s cch nhau t nht
mt khong trng.
V d:
Tachso.INP
95

Program Bai1;
Uses Crt;
Const
fi='tachso.inp';
fo='tachso.out';
Var n,i,s,max:Integer;
f:text;
Function Uc(x,y:Integer):Integer;
Begin
While x<>y do
If x>y then x:=x-y
Else y:=y-x;
Uc:=x;
End;

Tachso.OUT
95
19 76 1 9

Begin
{ Clrscr;}
Assign(f,fi);
Reset(f);
Readln(f,n);
Assign(f,fo);
Rewrite(f);
Writeln(f,n);
max:=1;
For i:= 2 to n div 2 do
If Uc(i,n-i)>max then
Begin
s:=i;
max:=Uc(i,n-i);
End;
If max>1 then
Writeln(f,s,' ',n-s,' ',Uc(s,n-s))
Else
Writeln(f,1,' ',n,' ',1);
Close(f);
End.

Tn sut

TS.PAS
Cho tp hp S c N phn t nguyn dng {s1, s2,, sN}.
(1 N 32000; 0 < si 32000; 1 i N)
Yu cu: Hy lit k cc phn t trong S c s ln xut hin ln hn mt ln.
D liu vo: Cho trong file vn bn TS.INP c cu trc nh sau:
- Dng 1: Ghi s nguyn dng N.
- Dng 2: Ghi N s nguyn dng l gi tr cc phn t ca tp hp S, cc s c
ghi cch nhau t nht mt du cch.
D liu ra: Ghi ra file vn bn TS.OUT trn nhiu dng, dng th i ghi 2 s s i di, hai s
cch nhau mt du cch. Trong si l phn t xut hin trong S ln hn mt ln v d i
tng ng l s ln si xut hin.
V d:
TS.INP
TS.OUT
7
3 2
2 5 5 3 5 3 9
5 3
const fi='TS.INP';
fo='TS.INP';
type mmc=array[0..32000] of word;
var a:mmc;
f:text;
n,d:word;

i,x:word;
Time:Longint;Times:Longint absolute 0:$46C;
Begin
Time:=Times;
Fillchar(A,sizeof(A),0);
assign(f,fi);
reset(f);
readln(f,n);
For i:=1 to n do
Begin
read(f,x);
a[x]:=a[x]+1;
End;
close(f);
assign(f,fo);
rewrite(f);
For i:=0 to 32000 do
if a[i]>1 then writeln(f,i,' ',a[i]);
close(f);
Writeln((Times-Time)/18.2:0:0);
Readln;
End.

Tn s
Cho dy s nguyn dng gm N phn t, s ln xut hin ca mt s c gi
tn s ca s nguyn . Hy tm s nguyn dng c tn s cao nht v tn s tng
ng ca n. Kt qu ghi ra mn hnh gm 2 s nguyn vit trn mt dng, s th
nht ghi s nguyn c tn s cao nht, s th 2 l tn s ca n (trong trng hp c
nhiu s nguyn c tn s cao nht bng nhau, hy a ra s nguyn nh nht v tn
s ca n). Hai s cch nhau t nht mt k t trng.
V d 1: Nhp N=9 v dy s nguyn dng l 1 2 5 6 3 7 2 5 2.
Kt qu in ra mn hnh l 2 3 (C ngha l s 2 l s nguyn c tn s cao nht v tn
s ca n l 3)
V d 2: Nhp N=7 v dy s nguyn dng l 2 4 6 7 7 2 4
Kt qu in ra mn hnh l 2 2 (C ngha l s 2 l s nh nht c tn s xut hin cao
nht l 2)
Chng trnh tham kho:
Var A:array[1..100] of integer;
dd:array[1..100] of boolean;
N,i,j,max,min,d:integer;
Begin
write('Nhap N=');readln(N);
for i:=1 to N do
begin
Write('A[',i,']=');
readln(A[i]);
end;
fillchar(dd,sizeof(dd),true);

max:=0;min:=a[1]; i:=1;
while i<=n do
if dd[i] then
begin
d:=1;
dd[i]:=false;
for j:=i+1 to n do
if (A[j]=A[i]) and (dd[j]) then
begin
d:=d+1;
dd[j]:=false;
end;
if d>max then
begin
max:=d;
min:=a[i];
end
else
if d=max then if a[i]<min then min:=a[i];
i:=i+1;
end else i:=i+1;
write(min,' ',max);
readln
End.

CT2:
Var A:array[1..100] of integer;
N,i,j,d1,d,min:integer;
Begin
write('Nhap N=');readln(N);
for i:=1 to N do
Begin
Write('A[',i,']=');
readln(A[i]);
End;
d1:=1;min:=A[1];
For i:=1 to N do
Begin
d:=0;
for j:=1 to N do
if A[j]=A[i] then d:=d+1;
if d>d1 then
Begin
d1:=d;
min:=A[i];
end;
if d=d1 then if A[i]<min then min:=A[i];
end;
write(min,' ',d1);
readln
End.

CT3:
program tanso;
uses crt;
type ma=array[1..50] of integer;

var a:ma;
n,i,dem,max,h,j:integer;
function xh(a:ma;n,j:integer):integer;
var i,dem:integer;
begin
dem:=0;
for i:=1 to n do
if a[i]=j then dem:=dem+1;
xh:=dem;
end;
BEGIN
clrscr;
write('Nhap n: ');
Readln(n);
for i:=1 to n do
begin
write('a[',i,']= ');
readln(a[i]);
end;
for i:=1 to n-1 do
for j:=i+1 to n do
if a[i]>a[j] then
begin
h:= a[i];
a[i]:=a[j];
a[j]:=h;
end;
max:=a[1];
for i:=1 to n do
if (xh(a,n,a[i]) > xh(a,n,max)) then max:=a[i];
write(max);
write(' ');
write(xh(a,n,max));
readln
END.

S cc tiu a phng
Xt dy s nguyn A={a1,a2,,aN}, s ai c gi l cc tiu a phng nu
tha mn mt trong cc iu kin sau:
i=1 v a1<a2
ai<ai-1 v ai < ai+1, 2<=i<=N-1.
i=N v aN<aN-1.
Cho s nguyn dng N (1<=N<=105) v dy s nguyn a1, a2,,aN (|ai|<=109,
1<=i<=N). Hy m v a ra mn hnh cc phn t l cc tiu a phng ca dy
s cho. Kt qu a ra gm 3 dng:
Dng 1 ghi s nguyn k l s lng cc phn t cc tiu a phng;
-

Dng 2 ghi K s nguyn dng l ch s ca cc phn t cc tiu a phng


theo th t tng dn nu k>0, ngc li ghi s 0;
Dng 3 ghi K s nguyn l gi tr ca cc phn t cc tiu a phng theo
th t tng dn nu k>0.;
Trn mi dng cc s ghi cch nhau t nht l mt k t trng nu k>=2.

V d:
Nhp N=8 v dy s 4 6 12 8 10 5 18 26
Kt qu a ra mn hnh nh sau:
3
146
458

Phn thng

PT.PAS

Trong cuc thi gii ton qua mng internet mi hc sinh u c s im


tch ly ring ca mnh. S im tch ly ca mi hc sinh l mt s nguyn dng
K (0 < K 2109). i tuyn ca trng THCS Ti Nng c N hc sinh tham gia d
thi (2 N 100). Ti bui gp mt trc k thi cp tnh, thy hiu trng quyt nh
thng cho cc hc sinh trong i tuyn Q triu ng, bit rng im tch ly ca mi
hc sinh u chia ht cho Q.
Yu cu: Hy tm s nguyn dng Q ln nht.
D liu vo: Cho trong file vn bn PT.INP c cu trc nh sau:
- Dng 1: Ghi s nguyn dng N l s lng hc sinh.
- Dng 2: Ghi N s nguyn dng ln lt l im tch ly ca N hc sinh, cc s
c ghi cch nhau t nht mt du cch.
D liu ra: Ghi ra file vn bn PT.OUT theo cu trc nh sau:
- Dng 1: Ghi s nguyn dng Q tm c.
V d:
PT.INP
5
15 24 45 36 27

PT.OUT
3

Program Phan_thuong;
Const fi='PT.INP';
fo='PT.OUT';
Type mmc=Array[0..101] of Longint;
Var N:Longint;
A:mmc;
Function UCLN(x,y:Longint):Longint;
Var sodu:Word;
Begin
sodu:=x mod y;
While sodu<>0 do
Begin
x:=y;

y:=sodu;
sodu:=x mod y;
End;
UCLN:=y;
End;
Procedure Read_Data;
Var f:text;
i:Longint;
Begin
Assign(f,fi);
Reset(f);
Readln(f,N);
For i:=1 to N do
Read(f,A[i]);
Close(f);
End;
Function USC:Longint;
Var f:text;
i,mUSC:longint;
Begin
mUSC:=UCLN(A[1],A[2]);
for i:= 3 to N do
mUSC:=UCLN(mUSC,A[i]);
USC:=mUSC;
End;
Procedure Write_Data;
Var f:Text;
Begin
Assign(f,fo);
Rewrite(f);
Write(f,USC);
Close(f);
End;
BEGIN
Read_Data;
Write_Data;
End.

Dy s i xng
Dy s c gi l dy s i xng nu c cc phn t ca dy s ny t tri
sang phi hay c ngc li u c cng kt qa.
V d: 1, 2, 1; 1, 2, 2, 1 l cc dy s i xng.
Dy s P c gi l dy s con ca dy s A nu cc phn t thuc P c mt
lin tip trong dy s A vi th t khng i.
V d: 2, 1, 3 l dy s con ca 1, 2, 2, 1, 3;
Cho dy s t nhin A gm n phn t a1, a2, a3an (ai <35000, 5<n<100)
Yu cu: Hy vit phng trnh tm dy s P l dy s con i xng di nht
ca dy s A

D liu vo: Nhp vo s t nhin n v n phn t ca dy s A.


Kt qu: Xut ra mn hnh kt qu va tm c
V d:
D liu vo: (nhp t bn phm)
Kt qu: (xut ra mn
hnh)
N=5 1 2 2 1
A: 1 2 2 1 2

MEETING Gp mt
Mt nhm gm n bn hc sinh ca mt lp tham gia mt cu lc b tin hc
vo dp ngh h. Bit rng khong thi gian m bn th i c mt ti cu lc b l [ai,
bi] (ai<bi tng ng l cc thi im n v ri khi cu lc b). C gio ch nhim
lp mun ti thm cc bn trong nhm ny. Hy gip c gio ch nhim xc nh thi
im n cu lc b sao cho ti thi im c gio c th gp c nhiu bn trong
nhm nht.
D liu: Vo t file vn bn MEETING.INP:

Dng u tin ghi s nguyn dng n (n 1000);

Dng th i trong s n dng tip theo ghi 2 s nguyn khng m ai, bi , i = 1, 2,


..., n.
Kt qu: Ghi ra file vn bn MEETING.OUT:

Dng u tin ghi s nguyn dng k l s lng bn ang c mt cu lc


b ti thi im c gio n;

Trong k dng tip theo ghi ch s ca k bn c mt cu lc b ti thi im


c gio n, mi dng ghi mt ch s ca mt bn.
V d:
MEETING.INP
6
1 2
2 3
2 5
5 7
6 7
9 11

MEETING.OUT
3
1
2
3

program gap_mat;
uses crt;
type ma=array[1..1000] of integer;
var n,i,k,j,p,s:integer;
f1,f2:text;
a,b,c:ma;
function dxh(a:ma;n,j:integer):integer;
var i,dem:integer;
begin
dem:=0;

MEETING.INP
5
12
35
79
11 15
17 21

MEETING.OUT
1
1

for i:=1 to n do
if a[i]=j then dem:=dem+1;
dxh:=dem;
end;
function xh(c:ma;p:integer):integer;
var s,i:integer;
begin
s:=a[1];
for i:=2 to p do
if dxh(c,p,c[i])>dxh(c,p,s) then s:=c[i];
xh:=s;
end;
BEGIN
assign(f1,'meeting.inp');
assign(f2,'meeting.out');
reset(f1);
rewrite(f2);
readln(f1,n);
for i:=1 to n do
readln(f1,a[i],b[i]);
write(dxh(b,n,xh(b,n+1)));
p:=1;
for i:=1 to n do
for j:=a[i] to b[i] do
begin
c[p]:=j;
p:=p+1;
end;
writeln(f2,dxh(c,p-1,xh(c,p-1)));
for i:=1 to n do
if (xh(c,p-1)>=a[i]) and (xh(c,p-1)<=b[i]) then writeln(f2,i);
close(f1);
close(f2);
END.

Chia bnh
Ti bui sinh nht ca Tun c mt ci bnh gat hnh trn. Bnh c vin
quanh bi mt lot cc qu du v nho. Mt bn gi bng xut mt cu hi:
cc bn c th ct bnh bng mt nht dao thnh hai phn sao cho s lng qu du
trong phn bnh ny bng s lng qu du trong phn bnh kia v s lng qu nho
trong phn bnh ny cng bng s lng qu nho trong phn bnh kia.
Bn hy lp trnh tr li cu ni trn.
D liu: Vo t file vn bn CAKE.INP:
Dng u tin ghi n l s lng qu trn vin ca bnh gat (n 255);
Dng th hai ghi dy gm n k t, mi k t ch l D hoc N, trong k t th i
l D nu v tr th i l qu du, l N nu v tr th i l qu nho. Cc v tr gn qu trn

bnh c nh s t 1 n n theo chiu kim ng h bt u t mt v tr tu (xem


hnh v).
Kt qu: Ghi ra mt dng ca file vn bn CAKE.OUT:
S -1 nu khng tm c cch ct tho mn yu cu;
Ghi 2 s nguyn dng a,b (a < b) cho bit cc qu v tr a, a+1,..,b l cc qu
thuc v cng mt trong 2 phn bnh.
V d:
CAKE.INP CAKE.OUT
6
35
DNNNDN

CAKE.INP CAKE.OUT
5
DNDDN

Bi ton tm nghim ca a thc:


Cho a thc bc n: A = anxn + an-1xn-1 ++ a1x + a0
Trong an, an-1,a1,a0 l cc h s nguyn c gi tr tuyt i khng qu 100.
Bit rng phng trnh A = 0 nu c nghim nguyn th nghim nguyn ch c th
l c s ca h s a0.
Yu cu: Hy tm tt c cc nghim nguyn (nu c) ca phng trnh A = 0.
D liu vo t file INTROOT.INP:
Dng u l s nguyn n (2n100)
Dng th 2 ghi n+1 s nguyn tng ng l cc h s an, an-1,a1,a0 ca a thc
(cc s cch nhau t nht mt khong trng).
Kt qu ghi vo file INTROOT.OUT mi dng ghi 1 nghim tm c (nu khng
c kt qu th ghi khong co).
V d:
INTROOT.INP
INTROOT.OUT
4
-1
1 -1 0 -2 -4
2
(Gii thch: trong v d trn th phng trnh x4-x3-2x-4=0 c 2 nghim nguyn l -1
v 2)
Hng dn thm: tnh biu thc A mt cch hiu qu nht, ngi ta phn tch A
thnh dng nh sau:
A = (((anx + an-1)x + an-2)x + )x +a1)x + a0
Program bai2;
Var i,n:shortint;f:text; a:array[0..100]of shortint;
Procedure Ini;
Begin
assign(f,'introot.inp');
reset(f);
readln(f,n);
For i:=n downto 0 do read(f,a[i]);
close(f);
assign(f,'introot.out');
rewrite(f);
end;

Function polynormial(x:integer):real;
Var i:shortint;y:real;
Begin
y:=a[n];
For i:=n-1 downto 0 do y:=y*x+a[i];
polynormial:=y;
End;
Procedure introot;
Begin
For i:=abs(a[0]) downto -abs(a[0]) do
if (i<>0) and(a[0] mod i = 0) then
if polynormial(i)=0 then writeln(f,i);
close(f);
end;
Begin
ini;
introot;
End.

Sp xp dy s
Tn file bi lm: DAYSO.PAS
Cho dy s nguyn a1, a2, ..., an (n 1000).
Hy tm cch thc hin mt s t nht php i ch hai s hng bt k ca dy thu
c dy s m s l ng v tr l, s chn ng v tr chn.
D liu: Vo t file vn bn DAYSO.INP:

Dng u tin cha s nguyn dng n;

Dng th i trong s n dng tip theo cha s hng ai ca dy cho (-32767


ai 32767, i = 1, 2, ..., n).
Kt qu: ghi ra file vn bn DAYSO.OUT:

Dng u tin ghi s lng php i ch cn thc hin k (qui c k = -1, nu


khng th bin i c dy cho thnh dy tho mn yu cu u bi);

Nu k > 0, th dng th j trong s k dng tip theo ghi ch s ca hai s hng cn


i ch cho nhau ln i ch th j ( j =1, 2, ..., k).
V d:
DAYSO.INP
6
1
2
3
4
6
5

DAYSO.OUT
1
56

DAYSO.INP
4
1
3
2
5

DAYSO.OUT
-1

AN TON GIAO THNG


Mt an xe c n chic (0<n<100) lu thng qua trm kim sot trng
ti, khi lng mi xe c ghi vo tp vn bn XE.INP. Chng hn mt tp
nh vy c dng nh sau:
5
11 12 23 4 5
Tp trn c ngha: an xe c 5 chic c nh th t t 1 n 5 vi
khi lng l s t nhin: 11, 12, 23, 4 v 5 tn.
- Yu cu: Vit chng trnh c tp vn bn XE.INP v thc hin cc
cng vic sau:
a) Tnh tng khi lng ca an xe, ghi kt qu vo tp CAN.OUT
b) Kim tra xem cc xe c s th t bao nhiu vt mc cho php lu
thng, bit rng nu xe c khi lng vt qu 20 tn th khng c php lu
thng. Kt qu ghi vo tp vn bn HUY.OUT, mi dng ghi s th t ca xe
vt mc khi lng qui nh, nu an xe khng c xe no vt mc khi
lng qui nh th ghi s 0.
V d:
XE.INP
5
11

12 23 4 5

CAN.OUT
55

HUY.OUT
3

GI TIN TIT KIM


T l hc sinh thng minh, hc gii. T gom gp c s tin a ng t
tin thng, tin ng b l x. T em s tin ny gi tit kim khng k hn vi
li sut 0,8% mi thng. Bit rng, vic gi tin tit kim khng k hn th tin
li khng c cng vo tin vn. Hi s thng t nht T phi gi tit kim
c s tin khng nh hn b ng (b>a).
Yu cu: Nhp t bn phm s nguyn dng a l s tin gi, s nguyn
dng b l s tin T mun c. Tnh s thng t t nht cn gi tit kim T
c s tin khng nh hn b. Xut kt qu ra mn hnh.
V d:
Nhp t bn phm
- Nhap so tien gui a = 10000
- Nhap so tien can co b = 11000

Xut ra mn hnh
t = 13

Gii hn: S t, a, b l cc s nguyn dng, c gi tr khng ln hn 106.

S ghi trn th ba
Cho N th ba c s hiu l 1, 2, 3,,N. Trn mi th ba ghi mt s nguyn
dng. i vi th ba c s hiu M (1<=M<=N) th s ghi trn n v ghi trn cc th
ba khc nh sau:
- M=1: cc th ba c s hiu M v M+1 ghi s 1.
- M>2: s ghi trn th ba c s hiu M bng tng cc s ghi trn cc th ba
c s hiu M-1 v M-2.
Hy xc nh s ghi trn th ba c s hiu K (1<=K<=N).
D liu vo l tp vn bn SGTTB.INP ghi 2 s N (3<=N<=10000) v K cch
nhau t nht l mt k t trng.
D liu ra l tp vn bn SGTTB.OUT ghi s ghi trn th ba c s hiu K.

on thng ri nhau
Trn trc s c N (1<N<=1000) on thng c s hiu l 1, 2,,N. on
thng c s hiu i c ta im u l s nguyn ai, ta im cui l s nguyn bi
(1<=i<=N, -1000<=ai<bi<=1000). Hy lit k ti a K on thng khng giao nhau.
D liu vo l tp vn bn DTRN.INP c cu trc:
- Dng u tin ghi s N;
- Dng th I trong N dng tip theo, mi dng ghi 2 s ai v bi cch nhau t
nht l mt k t trng biu th ta im u, ta im cui ca
on thng c s hiu i.
D liu ra l tp vn bn DTRN.OUT c cu trc:
- Dng u tin ghi s K;
- K dng tip theo, mi dng ghi 1 s l s hiu ca on thng trong tp
hp on thng tm c.
V d:
Tp DTRN.INP
Tp DTRN.OUT
4
3
23
1
45
2
19
4
68

CM K T S
Cho nhp vo 1 xu S gm cc k t. Hy lp trnh a ra mn hnh
mng cc cm k t s.
V d: s=ab123c45deg891
A.

123

45

891

Chng trnh nh sau:


Cch 1:
var p,s:string;
a:array[1..20] of string;
i,j:integer;
begin
write('S= ');readln(s);
p:=''; j:=0;
for i:=1 to length(s)+1 do
if ('0'<=s[i]) and (s[i]<='9') and (i<=length(s)) then p:=p+s[i]
else
if p<>'' then
begin
j:=j+1;
a[j]:=p;
p:='';
end;
for i:=1 to j do write(a[i],' ');
readln
end.
Cch 2:
program demkitusocuaxauvaomang;
var s,p:string;
j,i,k:byte;
f:text;
A:array[1..20] of string;
procedure doctep;
begin
read(f,s);
end;
procedure xuly;
begin
i:=1;k:=1;
while i<=length(s) do
begin
j:=i;p:='';

while ('0'<=s[j]) and (s[j]<='9') do


begin
p:=p+s[j];
j:=j+1;
end;
if p<>' ' then
begin
a[k]:=p;k:=k+1;
end;
i:=j+1;
end;
end;
procedure inra;
begin
for i:=1 to k do write(a[i],' ');
end;
BEGIN
assign(f, 'c:\tepxau.inp');
reset(f);
doctep;
xuly;
inra;
close(f);
readln
end.
Cho 1 xu k t trong c cha t nht 5 k t s. Hy tm cch xa
cc k t s trong xu sao cho 5 k t s cn li trong xu to thnh mt
xu s ln nht.
VD: s=ab76cd895gh543. Xu sau khi xa: 95543
Bi gii:
Program NamkituMax;
uses crt;
var f1,f2:text;
s:string;
procedure doctep;
begin
clrscr;
assign(f1,'c:\kitu.inp');reset(f1);
assign(f2,'c:\kitu.out');rewrite(f2);
readln(f1,s);
writeln(f2,'xau s la: ',s);
end;
procedure xuli;
var i,j,n,vt:byte;
max:char;

begin
for i:=length(s) downto 1 do
if (s[i]<'0') or (s[i]>'9') then
delete(s,i,1);
writeln(f2,'xau xoa het ki tu chu cai la: ',s);
n:=length(s);
for i:=1 to 5 do {c 5 ln tm s max}
begin
max:=s[i];vt:=i;
for j:=i+1 to n-5+i do
if s[j]>max then
begin
max:=s[j];
vt:=j;
end;
delete(s,i,vt-i); {xa cc k t ng trc Max (nu c)}
writeln(f2,'i:= ',i,' xau s:= ',s);
n:=length(s);
end;
delete(s,6,length(s)-5);{xa cc k t tha trong xu, chng hn xu
9999976854 th cc k t tha l 76854}
writeln(f2,s);writeln(f2,'xau vua xoa la: ',s);
close(f1);close(f2);
end;
begin
doctep;
xuli;
end.
Sa xu
Vit chng trnh nhp vo t bn phm mt xu k t, trong nu tnh t
tri sang phi th k t # l du hiu xo i mt k t ng ngay trc n nu
c. Sau in ra xu sa cha theo ng quy nh.
VD: Ta#oi thi hoc sinua#h###nh gioi tin hoj#c c ngha l Toi thi hoc sinh
gioi tin hoc
D liu vo: Tp Suaxau.inp cha xu k t cn sa
D liu ra: Tp Suaxau.out cha xu sa.
Chng trnh c th nh sau:
uses crt;
var s:string;
procedure nhap;
begin
clrscr;
write('nhap xau s vao: ');
readln(s);

end;
procedure xuli;
var n:byte;
begin
if s[1]='#' then delete(s,1,1);
while pos('#',s)<>0 do
begin
n:=pos('#',s);
delete(s,n-1,2);
end;
end;
procedure inra;
begin
writeln('xau da sua chua la: ',s);
readln;
end;
BEGIN
nhap;
xuli;
inra;
END.

Xu k t
C khng qu 1000 chin s cng an tham gia trong mt chin dch truy
qut ti phm tnh X. Cc chin s cng an c chia thnh khng qu 26
i. d iu hnh, b ch huy chin dch quy nh k hiu cho mi i l
mt ch ci in thng nm trong khong t a n z. Hai i khc nhau th
c 2 k hiu khc nhau. Cc chin s cng an thuc i no th c gn mt
k hiu ca i . Nu ly k hiu gn cho tt c cc chin s cng an
tham gia chin dch ghp li th c mt xu k t.
Hy xc nh s lng cc chin s cng an trong mi i.
D liu vo: l tp vn bn XAU.INP cha mt xu k t l kt qu ca vic
ghp k hiu gn cho tt c cc chin s cng an tham gia chin dch.
D liu ra: l tp vn bn XAU.OUT c khng qu 26 dng, mi dng ghi k
hiu cu mi i v s lng thnh vin cu i .
V d:
XAU.INP
XAU.OUT
abcad
a2
b1
c1
d1
Bi gii:
PROGRAM XAUKITU;
Var f1,f2:text;
s:string;
a:array[1..255] of char;
n:byte;

{--------------------------------------}
PROCEDURE DOCTEP;
Var i:byte;
Begin
Assign(f1,'c:\XAU.INP');reset(f1);
Assign(f2,'c:\XAU.OUT');rewrite(f2);
Readln(f1,s);
For i:=1 to length(s) do
a[i]:=s[i];
n:=length(s);
End;
{----------------------------------------}
PROCEDURE XULI;
Var tg:char;
j,i,dem:byte;
Begin
For j:=n downto 2 do
for i:=1 to j-1 do
if a[i]>a[i+1] then
begin
tg:=a[i];
a[i]:=a[i+1];
a[i+1]:=tg;
end;
dem:=1;
for i:=2 to n do
if a[i]=a[i-1] then dem:=dem+1
else
begin
Writeln(f2,a[i-1],dem);
dem:=1;
end;
Writeln(f2,a[n],dem);
Close(f1);Close(f2);
End;
{-------------------------------------}
BEGIN
DOCTEP;
XULI;
END.

Xu m ngoc, ng ngoc
Xt xu S ch bao gm cc k t m ngoc ( v ng ngoc ) . Xu S
xc nh mt cch t ngoc ng nu tha mn cc iu kin sau:
- S ngoc m bng s ngoc ng.

Nu duyt t tri sang phi, s lng ngoc m lun lun ln hn


hoc bng s lng ngoc ng.
V d: Xu ( ( ( ) ( ( ) ) ) ) xc nh cch t ngoc ng.
Xu ( ( ) ( ) ) ) ( ( ) ) l mt cch t ngoc sai ( v tr s 7)
Cho mt xu S ty no ch bao gm khng qu 255 cc k t m
ngoc ( v ng ngoc ). Hy kim tra xem xu cho c xc nh mt
cch t ngoc ng hay khng
D liu vo: Tp vn bn NGOAC.INP cha xu S.
Tp vn bn NGOAC.OUT c cu trc:
Nu xu S l mt cch t ngoc sai:
- Dng u tin ghi thng bo sai.
- Dng tip theo ghi s th t ca k t ngoc t sai u tin tm
c hoc s th t ca k t cn thiu dn ti cch t ngoc sai.
- Nu xu S c xc nh mt cch t ngoc ng th tp d liu ra ch
ghi thng bo ng trn mt dng.
Tp NGOAC.INP
Tp NGOAC.OUT
((()(())))
DUNG
Tp NGOAC.INP
Tp NGOAC.OUT
(()()))(())
SAI
7
Tp NGOAC.INP
Tp NGOAC.OUT
((()(()))
SAI
10
program ngoac;
uses crt;
var st:string;
f1,f2:text;
i:integer;
ok:boolean;
function demkt(st:string;n:integer;a:char):integer;
var i,dem:integer;
begin
dem:=0;
for i:=1 to n do
if st[i]=a then dem:=dem+1;
demkt:=dem;
end;
BEGIN
assign(f1,'ngoac.inp');
assign(f2,'ngoac.out');
reset(f1);
rewrite(f2);
read(f1,st);
ok:=true;
for i:=1 to length(st) do

if demkt(st,i,'(')<demkt(st,i,')') then begin ok:=false;


break;
end;
if demkt(st,i,'(')<>demkt(st,i,')') then ok:=false;
if ok then write(f2,'dung')
else
begin
writeln(f2,'sai');
write(f2,i);
end;
close(f1);
close(f2);
END.
Dy ngoc ng.
Xu S ch bao gm cc k t ngoc m ( v ngoc ng ). Xu S xc
nh mt cch t ngoc ng nu tha mn cc iu kin sau:
- S ngoc m bng s ngoc ng;
- Nu duyt t tri sang phi, s lng ngoc m lun lun ln hn hoc bng
s lng ngoc ng.
V d: xu (()(())) xc nh mt cch t ngoc ng. Cn xu ())()) l mt
cch t ngoc sai.
Yu cu: Hy xc nh on ngoc ng di nht.
D liu vo l tp vn bn NGOAC.INP cha mt dng khng qu 255 du
ngoc. D liu ra l tp vn bn NGOAC.OUT:
- Dng u tin ghi di ca dy ngoc ng di nht.
- Dng th 2 ghi ch s u v ch s cui ca on ngoc ng .
- Nu khng c on ngoc ng no thi ghi vo tp thng bo khng c.
V d:
NGOAC.INP
NGOAC.OUT
((())))(()(()))
8
8 15
Cch 1: tng gii:
- u tin ta xy dng hm kiu logic c tn KT kim tra mt dy
ngoc cho c phi l dy ngoc ng hay khng.
- Sau ln lt duyt v kim tra cc xu c di t n tr v 2. Nu
tm thy xu con l dy ngoc ng th in kt qu v kt thc chng
trnh.
Chng trnh gii nh sau:
Program dayngoacdung;
var p,s:string;
Function kt(a:string):boolean;
var tg:boolean;
i,d:integer;

begin
tg:=true;
kt:=false;d:=0;
for i:=1 to length(a) do
begin
if a[i]='(' then d:=d+1
else if a[i]=')' then d:=d-1;
if d<0 then tg:=false;
end;
if (d=0) and (tg) then kt:=true;
end;
procedure xuli;
var i,j,dem:byte;
Begin
dem:=0;
for i:=length(s) downto 2 do {duyt cc xu c di t n v 2}
for j:=1 to length(s)-i+1 do
begin
p:=copy(s,j,i);
if kt(p) then {nu p l dy ngoc ng th in ra v kt thc}
begin
dem:=dem+1;{m xem c dy ngoc ng hay khng}
write(i,' ', j,' ', j+i-1);
readln;
exit;
end;
end;
if dem=0 then write(' khong co day ngoac dung');
End;
BEGIN
write(' nhap xau:');readln(s);
xuli;
readln
END.
Bin i xu
Cho trc mt xu nh phn di bt k c a vo t file vn bn
INPUT.TXT. Cn bin i xu nh phn ny v dng ton s 0. Cc php bin
i c th ch l mt trong cc loi sau:
- Bin i xu con 11 thnh 00
- Bin i xu con 010 thnh 000
Hy ch ra mt cch bin i xu cho thnh xu ton s 0. Kt qu th hin
trong file OUTPUT.TXT nh sau:
Dng u tin ca OUTPUT.TXT cha xu ban u, sau mi dng l 1 xu
tip theo sau mt php bin i, xu cui cng l xu ton s 0.
V d:

INPUT.TXT
11010011

INPUT.TXT
10101101

OUTPUT.TXT
11010011
11010000
00010000
00000000
OUTPUT.TXT
Khong the bien doi duoc

Chng trnh tham khao:


var s:string;
i:byte;
Begin
write('nhap xau:');readln(s);
if s='111' then
Begin
write('khong the bien doi duoc');
exit;
end;
if ((s[1]='1') and (s[2]='0')) or ((s[length(s)-1]='0') and (s[length(s)]='1')) then
Begin
write('khong the bien doi duoc');
exit;
end;
writeln(S);
if ((s[1]='1') and (s[2]='1')) then
begin
s[1]:='0';
s[2]:='0';
writeln(s);
end;
if ((s[length(s)-1]='1') and (s[length(s)]='1')) then
begin
s[length(s)-1]:='0';
s[length(s)]:='0';
writeln(s);
end;
for i:=1 to length(s)-1 do
if (s[i]='1') and (s[i+1]='1') then
begin
s[i]:='0';
s[i+1]:='0';
writeln(s);
end;
for i:=1 to length(s)-2 do
if (s[i]='0') and (s[i+1]='1') and (s[i+2]='0') then
begin

s[i+1]:='0';
writeln(s);
end;
readln
end.
Sp s trong xu
Nhp 1 xu s bao gm s v k t, in ra xu sp xp s theo th t tng
dn cn v tr cc k t vn gi nguyn.
tng gii:
Ln lt tm cc xu s, tm n u p dng thut ton sp xp tro i
sp xp xu s n
var s:string;
d,k,i,j:integer;
tg:char;
Begin
write('Nhap xau s=');readln(s);
d:=0;
for k:=1 to length(s)+1 do
if (s[k]>='0') and (s[k]<='9') and (k<=length(s)) then d:=d+1
else
if d>0 then
begin
for j:=k-1 downto k-d+1 do
for i:=k-d to j-1 do
if s[i]>s[i+1] then
begin
tg:=s[i];
s[i]:=s[i+1];
s[i+1]:=tg;
end;
d:=0;
end;
write(' Xau sau khi SX so la:',s);
readln
End.
Xu con
Cho xu nh phn S c di khng qu 104 (xu ch cha cc c s 0
v 1).
Hy cho bit c bao nhiu xu con cha cc k t lin tip nhau ca xu S c s
lng ch s 0 bng s lng ch s 1.
D liu vo l tp vn bn XAUCON.INP gm mt dng duy nht ghi
xu nh phn S.
D liu ra l tp vn bn XAUCON.OUT gm mt dng duy nht ghi
mt s l s lng xu con tm c.

XAUCON.INP
1010

XAUCON.OUT
4

Cch 1: Phng php ch s dng 1 vng For


Const max=10000;
Fi='XAUCON.INP';
Fo='XAUCON.OUT';
Var S: Ansistring;
c: Array[-max..max] of longint;
f:text;
i,sum:longint;
count:int64;
BEGIN
Assign(f,fi); reset(f);
Read(f,s);
Close(f);
Fillchar(c,sizeof(f),0);
C[0]:=1;
Sum:=0;
Count:=0;
For i:=1 to length(s) do
Begin
If s[i]='A' then sum:=sum-1 else sum:=sum+1;
Count:=count+c[sum];
Inc(c[sum]);
End;
Assign(f,fo);rewrite(f);
Write(f, count);
Close(f);
END.
Xu i xng
Xu i xng l xu c cc k t ging nhau v i xng nhau qua im
gia xu. Cho trc N xu k t c s hiu 1, 2, ..., N (N1000). Hy tm cc
xu i xng.
D liu vo: Tp vn bn XAU.INP c cu trc:
- Dng u tin ghi s N;
- N dng tip theo cha cc xu k t, mi xu nm trn mt dng v c
di khng qu 255 k t.
D liu ra: Tp vn bn XAU.OUT c cu trc:
- Dng u tin ghi s L l s lng cc xu i xng;
- Cc dng tip theo ghi s hiu ca cc xu i xng, tun t theo th t
tm c cho n ht L s. Mi dng ghi khng qu 20 s, cc s trn mi
dng cch nhau t nht l mt k t trng.
V d:

Tp XAU.INP
4
aba
AcCA
uVkKKkVu
deged

Tp XAU.OUT
3
134

This file is part of Phan Manh Tuan


Copyright (c) 2015 by Phan Manh Tuan
program xaudoixung;
uses crt;
var n,i,dem:integer;
a:array[1..50] of string ;
f1,f2:text;
function kt(st:string):boolean ;
var ok:boolean;
i:integer;
begin
ok:=true ;
for i:=1 to length(st) do
if st[i]<>st[length(st)-i+1] then ok:=false;
kt:=ok;
end;
BEGIN
assign(f1,'xau.inp');
assign(f2,'xau.out');
reset(f1);
rewrite(f2);
readln(f1,n);
for i:=1 to n do
readln(f1,a[i]);
dem:=0;
for i:=1 to n do
if kt(a[i]) then dem:=dem+1;
writeln(f2,dem);
for i:=1 to n do
if kt(a[i]) then write(f2,i,' ');
close(f1);
close(f2);
readln
END.

Xu nh phn
Xu S ch c 1 ch s 1 c bin i nh sau: Ti mi bc bin i, ch
s 1 s thnh 01, ch s 0 s thnh 10. Nh vy sau bc u ta c xu 01,
sau bc 2 c xu 1001 v c th tip tc.

Hy cho bit sau N bc bin i nh nu trn th xu S tr thnh xu nh th


no?.
D liu vo l s N (1 N 7) c nhp vo t bn phm.
D liu ra l tp vn bn XAUNP.OUT c cu trc:
- Dng th nht ghi s k t ca xu S sau N bc bin i.
- Dng th hai ghi xu S sau N bc bin i.
D liu vo
N=3
program xaunhiphan;
uses crt;
var n,i,j,k:integer;
st:string;
f2:text;
function pt(st:string):string;
var j,k:integer;
begin
j:=1;
repeat
if st[j]='1' then
begin
insert('0',st,j);
j:=j+2;
end
else
begin
insert('1',st,j);
j:=j+2;
end;
until j=length(st)+1;
pt:=st;
end;
function mu(a,b:integer):longint;
var i:integer;
s:longint;
begin
s:=1;
for i:=1 to b do
s:=s*a;
mu:=s;
end;
BEGIN
clrscr;
assign(f2,'xaunp.out');
rewrite(f2);
write('N= ');
readln(n);
st:='1';

Tp XAUNP.OUT
8
01101001

writeln(f2,mu(2,n));
for i:=1 to n do
st:=pt(st);
write(f2,st);
close(f2);
END.

Tm chui
Cho trc tp tin vn bn INPUT.INP gm nhiu dng (khng qu 1000
dng), mi dng cha mt chui k t (gm cc ch ci t A n Z vit dnh
lin vi nhau), mi chui di khng qu 255 k t. Trong tp tin ny c duy nht
mt chui xut hin ng mt ln, cc chui cn li u xut hin ng k ln.
(S k khng cho trc, nhng bit rng k l mt s chn v k0).
Yu cu: Vit chng trnh c tp tin INPUT.INP x l v tm chui duy
nht , ghi kt qu tm c vo tp tin vn bn OUTPUT.OUT.
Kt qu: Tp tin OUTPUT.OUT c mt dng l chui k t tm c
theo yu cu.
V d:
INPUT.INP
ABCD
EFGHIJK
TINHOCTRE
ABCD
EFGHIJK

OUTPUT.OUT
TINHOCTRE

program timchuoi;
uses crt;
type ma=array[1..100] of string;
var f1,f2:text;
a:ma;
i,j:integer;
function demkt(a:ma;n:integer;st:string):integer;
var i,dem:integer;
begin
dem:=0;
for i:=1 to n do
if a[i]=st then dem:=dem+1;
demkt:=dem;
end;
BEGIN
clrscr;
assign(f1,'input.inp');
assign(f2,'output.out');
reset(f1);
rewrite(f2);

i:=1;
repeat
readln(f1,a[i]) ;
i:=i+1;
until seekeof(f1);
for j:=1 to i-1 do
if demkt(a,i-1,a[j])=1 then write(f2,a[j]);
close(f1);
close(f2);
END.
Dy ngoc hp l:
Mt dy du ngoc hp l l mt dy cc k t ( v ) c nh ngha nh
sau:
- Dy rng (khng c k t no) l mt dy du ngoc hp l.
- Nu A l mt dy du ngoc hp l th (A) l dy du ngoc hp l. Du
ngoc m v du ngoc ng hai bn dy A c gi l tng ng vi nhau.
- Nu A v B l hai dy du ngoc hp l th AB l dy du ngoc hp l.
V d: ((()))()(()) l dy du ngoc hp l, ngi ta vit vo sau mi du ngoc
m mt s l s du ngoc (c ng v m) nm gia trong cp du ngoc
m vi du ngoc ng tng ng ( mun ni l c bao nhiu cp du
ngoc nm trong cp du ngoc ny):
Vi dy trn ta c: (4(2(0)))(0)(2(0))
Sau ngi ta li xo i cc du ngoc (c ngoc ng v m)
Vi v d trn ta c: 4 2 0 0 2 0
Yu cu: Cho bit dy s cn li, hy khi phc li dy ngoc ban u.
D liu vo: c ly t file vn bn B4IN.TXT c cu trc nh sau:
- Dng th nht: Ghi s nguyn dng n l s phn t ca dy s cn li
(n<=255).
- Dng th hai: Ghi ln lt cc s trong dy.
D liu ra: Kt qu ghi vo file vn bn B4OUT.TXT gm mt dng duy nht
l dy du ngoc khi phc c.
V d :
B4IN.TXT
6
420020
B4OUT.TXT
((()))()(())
B4IN.TXT
8
64200020
B4OUT.TXT (((())))()()(())
Var f,g: text;
a: array[1..50] of integer;

b: array[1..100] of char;
i,j,n: integer;
Begin
assign(f,daungoac.inp);
reset(f);
assign(g,daungoac.out);
rewrite(g);
readln(f,n);
for i:= 1 to n do read(f,a[i]);
fillchar(b,sizeof(b),0);
j:= 1;
for i:= 1 to 2*n do
if b[i] <> ) then
begin
b[i] := (;
b[i+a[j]+1] := );
inc(j);
end;
for i:= 1 to 2*n do write(g,b[i]);
close(f);
close(g);
end.

Dy ngoc hp l
Mt dy du ngoc hp l l mt dy cc k t ( v ) c nh ngha nh
sau:
- Dy rng (khng c k t no) l mt dy du ngoc hp l.
- Nu A l mt dy du ngoc hp l th (A) l dy du ngoc hp l. Du ngoc
m v du ngoc ng hai bn dy A c gi l tng ng vi nhau.
- Nu A v B l hai dy du ngoc hp l th AB l dy du ngoc hp l.
V d: ((()))()(()) l dy du ngoc hp l, ngi ta vit vo sau mi du ngoc
m mt s l s du ngoc (c ng v m) nm gia trong cp du ngoc m vi
du ngoc ng tng ng:
Vi dy trn ta c: (4(2(0)))(0)(2(0))
Sau ngi ta li xo i cc du ngoc (c ngoc ng v m)
Vi v d trn ta c: 4 2 0 0 2 0
Yu cu: Cho bit dy s cn li, hy khi phc li dy ngoc ban u.
D liu vo: c ly t file vn bn B4IN.INP c cu trc nh sau:
- Dng th nht: Ghi s nguyn dng n l s phn t ca dy s cn li
(n<=255).
- Dng th hai: Ghi ln lt cc s trong dy.
D liu ra: Kt qu ghi vo file vn bn B4OUT.OUT gm mt dng duy nht l
dy du ngoc khi phc c.
V d 1 :
B4IN.INP
B4OUT.OUT
6
((()))()(())
420020

V d 2:
B4IN.INP
8
64200020

B4OUT.OUT
(((())))()()(())

Var f, g: text;
a: array[1..50] of integer;
b: array[1..100] of char;
i, j, n: integer;
Begin
Assign(f,daungoac.inp);
Reset(f);
Assign(g,daungoac.out);
Rewrite(g);
Readln(f,n);
For i:= 1 to n do read(f,a[i]);
Fillchar(b,sizeof(b),0);
j:= 1;
For i:= 1 to 2*n do
if b[i] <> ) then
Begin
b[i] := (;
b[i+a[j]+1] := );
inc(j);
End;
For i:= 1 to 2*n do write(g,b[i]);
close(f);
close(g);
End.

Nn v gii nn
Mt xu k t c th "nn" theo cch sau: Mt xu con gm n>1 k t ging
nhau, chng hn gm n k t "a" s c ghi thnh na. V d xu 'aaaabbcd' s c
nn thnh 4a2bcd. Hy vit chng trnh nn v gii nn. (Ch trong cc xu c
nn phi khng c ch s).
D liu vo: Cho trong tp STRING.INP
Kt qu: Ghi vo tp STRING.Out
string.inp
aaaabbcd
3a2b

Program nenvagiainen;
var
i,j,d,n:byte;

string.out
4a2bcd
aaabb

s1,s2:string;
k:byte;
f:text;
PROCEDURE doc_tep;
begin
assign(f,'string.inp');
reset(f);
readln(f,s1);
readln(f,s2);
close(f);
assign(f,'string.out');
rewrite(f);
end;
PROCEDURE nen_xanen;
Begin
d:=1;
for i:=2 to length(s1)+1 do
if (s1[i]=s1[i-1]) and (i<=length(s1)) then d:=d+1
else
begin
if d=1 then write(f,s1[i-1])
else write(f,d,s1[i-1]);
d:=1;
end;
writeln(f);
i:=1;
while i<=length(s2) do
begin
if (s2[i]>='1') and (s2[i]<='9') then
begin
val(s2[i],n);
for j:=1 to n do write(f,s2[i+1]);
i:=i+2;
end
else
begin
write(f,s2[i]);
i:=i+1;
end;
end;
End;
BEGIN
doc_tep;
nen_xanen;
close(f);
END.

TM MT KHU
Vic bo v my tnh hn ch ngi khc thm nhp l mt vn
t ra cho mi ngui s dng my tnh. tng tnh an ton trong lu tr, mt
ngui quyt nh giu mt khu truy cp my tnh ca mnh vo mt xu S
vi mt qui c sao cho khi cn anh ta c th ly li c mt khu t S. L
mt ngi yu thch s hc anh ta chn mt khu P l mt s t nhin v m

ha P = P1 + P2 + +Pi vi (Pi l s nguyn, 0<=Pi<=9, 0<i<200) em du cc


s Pi vo mt xu k t S.
Chng hn xu S=mat #223 ma 678 @ cha mt khu l 28 v
P=2+2+3+6+7+8
- Yu cu: Cho mt xu k t S chiu di khng qu 255 k t. Tm
mt khu P du trong xu S bit P c gi tr nh hn 1000.
- D liu vo: T tp vn bn PWORD.INP gm 1 dng duy nht l xu
S.
- Kt qu: Ghi vo tp vn bn PWORD.OUT cha s P tm c.
- V d:
PWORD.INP
PWORD.OUT
1pass123@456word
22

You might also like