You are on page 1of 13

Trêng THCS §¹i Tù – N¨m häc 2004 – 2005.

=========================================================

PhÇn 1: Më ®Çu.
I) Lý do chän chuyªn ®Ò
ViÖc ®a tin häc vµo trêng phæ th«ng ®îc bé GD§T, c¸c Së GD§T hÕt
søc quan t©m . Lµ mét gi¸o viªn tham gia gi¶ng d¹y bé m«n tin häc trong
nhµ trêng ®Æc biÖt lµ gióp c¸c em bíc ®Çu lµm quen víi ng«n ng÷ lËp
tr×nh PASCAL. Qua thêi gian gi¶ng d¹y vµ t×m tßi , ch¾t läc nghiªn cøu
t«i xin tr×nh bµy mét chuyªn ®Ò nhá “Gi¶i mét sè bµi to¸n vÒ sè ®èi
xøng” §Ó häc sinh bíc ®Çu lµm quen vèi ng«n ng÷ lËp tr×nh PASCAL

II) Ph¹m vi, môc ®Ých cña chuyªn ®Ò


1) Ph¹m vi cña chuyªn ®Ò:
Do ®iÒu kiÖn h¹n chÕ vÒ thêi gian vµ kh¶ n¨ng cã h¹n, chuyªn ®Ò
chØ nªu ®îc mét sè thuËt gi¶i qua c¸c vÝ dô minh ho¹ vÒ “Sè ®èi
xøng”
2) Môc ®Ých cña chuyªn ®Ò:
- Gióp häc sinh hiÓu ®îc thÕ nµo lµ sè ®èi xøng vµ c¸ch c¸ch
cµi ®Æt kh¸c nhau .

PhÇn 2: Néi dung cô thÓ


I) C¬ së lÝ luËn:
Th«ng qua chuyªn ®Ò nµy häc sinh biÕt vËn dông vµ ®îc cung cÊp
c¸c kiÕn thøc cÇn thiÕt vÒ ph¬ng ph¸p sö dông c¸c vßng lÆp c¸c kü
thuËt lËp tr×nh c¬ b¶n nh÷ng kinh nghiÖm cô thÓ trong qua tr×nh
t×m tßi lêi gi¶i, gióp häc sinh rÌn luyÖn c¸c thao t¸c t duy, ph¬ng
ph¸p suy luËn vµ kh¶ n¨ng s¸ng t¹o.
II) C¸c bµi tËp minh ho¹ :
1.1- T×m hiÓu kh¸i niÖm sè ®èi xøng (Palindrom)
Sè a1a2a3........an-2an-1an tho¶ m·n a1=an, a2=an-1, a3=an-2....
khi ®ã sè a1a2a3........an-2an-1an ®îc gäi lµ sè ®èi xøng
VD: sè 11, 22, 333, 414 ,123321 ®îc gäi lµ sè ®èi xøng

======================================================= Ch 1
Chuyªn ®Ò: Gi¶i mét sè bµi to¸n vÒ sè ®èi xøng.
Trêng THCS §¹i Tù – N¨m häc 2004 – 2005.
=========================================================
1.2 Mét sè bµi to¸n ®èi xøng:
Bµi to¸n 1 : NhËp vµo sè tù nhiªn n kiÓm tra xem n cã ph¶i lµ sè ®èi xøng
kh«ng
Bµi to¸n 2 :§äc ra tÊt c¶ c¸c sè ®èi xøng thËp ph©n cã m (m<6)ch÷ sè ?
Bµi to¸n 3 : T×m sè ®èi xøng tõ mét m¶ng sè nguyªn nhËp vµo tõ bµn phÝm
Bµi to¸n 4 : Sè n ®îc gäi lµ sè ®èi xøng nhi ph©n nÕu biÓu diÔn nhÞ ph©n cña
n lµ mét biÓu thøc ®èi xøng.ViÕt ch¬ng tr×nh kiÓm tra tÝnh ®èi xøng nhÞ
ph©n cña sè tù nhiªn n cho tríc.
Bµi to¸n 5:§äc ra tÊt c¶ c¸c sè võa ®èi xøng thËp ph©n võa ®èi xøng nhÞ ph©n
nhá h¬n 1000.
Bµi to¸n 6: KiÓm tra chuçi S cã ph¶i lµ chuçi ®èi xøng hay kh«ng?
Bµi to¸n 7: ChÌn vµo chuçi S Ýt ký tù nhÊt ®Ó trë thµnh chuçi ®èi xøng.
Bµi to¸n 8: Xãa ®i Ýt ký tù nhÊt ®Ó S trë thµnh chuçi ®èi xøng.
Bµi to¸n 9: §äc ra sè ®èi xøng nhá nhÊt lín h¬n n (n <=100 ch÷ sè)
VD: n=999 th× ®ä ra 1001.

1.3 Gi¶i thuËt cho bµi to¸n ®èi xøng:


a, X©y dùng hµm kiÓm tra:

Function KTDX(k:Longint):Boolean;
Var
Begin
Str(k,st); {§æi k sang chuçi st}
KTDX:=False;
For w:=1 to length(st) do
If st[w] <> st[length(st)-w+1] then exit;
KTDX:=True;
End;
b, Gäi hµm kiÓm tra tõng ®èi tîng vµ kÕt luËn

======================================================= Ch 2
Chuyªn ®Ò: Gi¶i mét sè bµi to¸n vÒ sè ®èi xøng.
Trêng THCS §¹i Tù – N¨m häc 2004 – 2005.
=========================================================
{Bµi 1}
uses crt;
var i,i1,m,n,d,j:longint;
dx:boolean;
a,b:array[1..100] of longint;
begin
write('nhap so n=');readln(n);
m:=1;
d:=0;
repeat
i1:=0;
i:=m;
repeat
inc(i1);
a[i1]:=i mod 10;
i:=i div 10;
until i=0;
j:=1;
dx:=true;
if i1>1 then
while (j<=i1 div 2) and(dx) do
begin
dx:=(a[j]=a[i1-j+1]);
inc(j);
end;
if dx then begin
inc(d);

write(m,' ');
end;
inc(m);
until m>n;
write('co',d);
readln
end.
............................................... uses crt;
var i,n,d,m,m1,k:longint;
a,b:array[1..100] of longint;
begin

======================================================= Ch 3
Chuyªn ®Ò: Gi¶i mét sè bµi to¸n vÒ sè ®èi xøng.
Trêng THCS §¹i Tù – N¨m häc 2004 – 2005.
=========================================================
write('nhap so n=');readln(n);
i:=1;
k:=0;
repeat
b[i]:=n mod 10;
n:=n div 10;
inc(k);
inc(i);
until n=0;
i:=1;
d:=0;
m1:=k;
m:=m1;
while i<=m div 2 do
begin
if b[i]=b[k] then inc(d)
else begin
writeln('so tren khong phai la so doi xung');
readln;
halt;
end;
inc(i);
dec(k);
m:=m1;
end;
if d=trunc(m div 2) then writeln('so tren la so doi xung');
readln;
end.

+ Cã thÓ viÕt hµm ®Ó tiÖn sö dông khi trong mét ch¬ng tr×nh cÇn
ph¶i kiÓm tra nhiÒu lÇn.
uses crt;
var n :longint;
Function dx(n:longint):boolean;
var i,j:integer;
a :array[1..20] of integer;
kt:boolean;
begin
======================================================= Ch 4
Chuyªn ®Ò: Gi¶i mét sè bµi to¸n vÒ sè ®èi xøng.
Trêng THCS §¹i Tù – N¨m häc 2004 – 2005.
=========================================================
i:=0;
repeat
inc(i);
a[i] :=n mod 10;
n:=n div 10;
until n=0;
j:=1;
kt:=true;
if i>1 then while(j<=i div 2) and kt do
begin kt:=(a[j]=a[i-j+1]);inc(j) ; end;
DX:=kt;
end;
BEGIN
clrscr;
writeln('Vao N=');readln(n);
if dx(n) then writeln('N la so doi xung ')else
write('N khong phai la so doi xung');
readln
END.

...........................
Bµi to¸n 2 :§äc ra tÊt c¶ c¸c sè ®èi xøng thËp ph©n cã m (m<6)ch÷
sè ?
uses crt;
var n,m,i,d:longint;
dx:boolean;
T,A:array [1..1000] of longint;
S:String;
function mu(a,n:longint):longint;
begin
if a=0 then mu:=1 else mu:=mu(a-1,n)*n;
end;
BEGIN
clrscr;
write('Nhap vao so chu so m=');readln(m);
for n:=mu(m-1,10) to mu(m,10)-1 do
begin
dx:=true;
str(n,S);
======================================================= Ch 5
Chuyªn ®Ò: Gi¶i mét sè bµi to¸n vÒ sè ®èi xøng.
Trêng THCS §¹i Tù – N¨m häc 2004 – 2005.
=========================================================
if length(S)>1 then begin
i:=1;
while dx and (i<=length(S) div 2) do begin
dx:=(s[i]=s[length(s)-i+1]);
inc(i);
end;
if dx then begin
inc(d);
if d=1 then writeln('Cac so doi xung la');
write(n,' ');
end;
end;
end;
writeln;
writeln('Co ',d,' so.');
readln;
END.
..............................
Bµi to¸n 3 : T×m sè ®èi xøng tõ mét m¶ng sè nguyªn nhËp vµo tõ bµn phÝm

uses crt;
var i,n,d,j,i1,m:longint;
a,b,c:array[1..100] of longint;
dx:boolean;
begin
write('nhap so n=');readln(n);
d:=0;
for i:=1 to n do
begin
write('b[',i,']=');readln(b[i]);
end;
for i:=1 to n do
begin
i1:=0;
m:=b[i];
repeat
inc(i1);
a[i1]:=b[i] mod 10;
b[i]:=b[i] div 10;

======================================================= Ch 6
Chuyªn ®Ò: Gi¶i mét sè bµi to¸n vÒ sè ®èi xøng.
Trêng THCS §¹i Tù – N¨m häc 2004 – 2005.
=========================================================
until b[i]=0;
j:=1;
dx:=true;
if i1>1 then
while (j<=trunc(i1 div 2)) and(dx) do
begin
dx:=a[j]=a[i1-j+1];
inc(j);
end;
if dx then begin
inc(d);
c[d]:=m;
end;
end;
if d=0 then writeln('Trong mang khong co so doi xung nao');
if d>0 then
for i:=1 to d do
begin
if i=1 then write('Cac phan tu cua mang la doi xung la:',c[i],' ');
if i>1 then write(c[i],' ');
end;
readln
end.
.........................................................................................................
Bµi to¸n 4 : Sè n ®îc gäi lµ sè ®èi xøng nhi ph©n nÕu biÓu diÔn
nhÞ ph©n cña n lµ mét biÓu thøc ®èi xøng.ViÕt ch¬ng tr×nh kiÓm
tra tÝnh ®èi xøng nhÞ ph©n cña sè tù nhiªn n cho tríc.

uses crt;
Var n: word;
i, j: integer;
dx: Boolean;
A: array[1..16] of 0..1;
Begin
Write(' Nhap so tu nhien n: '); Readln(n);
i:=0;
While n>0 do
Begin
======================================================= Ch 7
Chuyªn ®Ò: Gi¶i mét sè bµi to¸n vÒ sè ®èi xøng.
Trêng THCS §¹i Tù – N¨m häc 2004 – 2005.
=========================================================
inc(i);
A[i]:= n mod 2;
n:= n div 2;
End;
j:=1;
dx:= True;
If i>=2 then
While (j<=(i div 2)) do
Begin
If A[j] <>A[i-j+1] then dx:= False;
inc(j);
End;
If dx then Writeln(' So n la so doi xung nhi phan ')
Else Writeln(' So n khong la so doi xung nhi phan');
Readln;
End.

Bµi to¸n 5:§äc ra tÊt c¶ c¸c sè võa ®èi xøng thËp ph©n võa ®èi
xøng nhÞ ph©n nhá h¬n 1000.
Uses crt;
Var N,N1,c,i,j: integer;
A: array[1..16] of 0..9;
Stop,dx: boolean;
Begin
Clrscr;
Writeln('Cac so thoa man la:');
For N:=0 to 999 do
Begin
Stop:=false;
c:=10;
While not stop do
Begin
i:=0;
N1:=N;
While N1<>0 do
Begin
inc(i);
A[i]:=N1 mod c;

======================================================= Ch 8
Chuyªn ®Ò: Gi¶i mét sè bµi to¸n vÒ sè ®èi xøng.
Trêng THCS §¹i Tù – N¨m häc 2004 – 2005.
=========================================================
N1:=N1 div c;
End;
dx:=true;
j:=1;
If i>1 then
While dx and (j<=(i div 2)) do
Begin
dx:=(A[j]=A[i-j+1]);
inc(j);
End;
Stop:=(not dx)or(dx and(c=2));
If dx then
If c<>2 then c:=2 Else Writeln(N);
End;
End;
Readln;
End.

{ xau con doi xung dai nhat}


var a:array[1..100] of string;
st,st1:string;
i,j,n,d,s,max,k,h:longint;
function dx(s:string):Boolean;
var w:longint;
begin
dx:=false;
for w:=1 to length(s) do
if s[w]<>s[length(s)-w+1] then exit;
dx:=true;
end;
Begin
write('Nhap xau st='); Readln(st);
i:=1;n:=length(st);
repeat
j:=n;
repeat

======================================================= Ch 9
Chuyªn ®Ò: Gi¶i mét sè bµi to¸n vÒ sè ®èi xøng.
Trêng THCS §¹i Tù – N¨m häc 2004 – 2005.
=========================================================
st1:=copy(st,i,j-i+1);
if dx(st1) then
begin
d:=length(st1);
if (d>max) and dx(st1) then max:=d;
end
else
dec(j);
until dx(st1);
inc(i);
until i>=n;
writeln(max);
for i:=1 to n do
if (dx(copy(st,i,max))) and (max =copy(st,i,max)) then
write(copy(st,i,max),' ');
readln;
end.
{-------------------------------------------}

{chen them it ky tu nhat de duoc xau doi xung}


var st1:string;
i,j,w,d,s,max:longint;
function dx(st:string):Boolean;
var w:longint;
begin
dx:=false;
for w:=1 to length(st) do
if st[w]<> st[length(st)-w+1] then exit;
dx:=true;
end;
Begin
write('Nhap xau st='); Readln(st1);
i:=1; j:=length(st1);
repeat

======================================================= Ch 10
Chuyªn ®Ò: Gi¶i mét sè bµi to¸n vÒ sè ®èi xøng.
Trêng THCS §¹i Tù – N¨m häc 2004 – 2005.
=========================================================
if st1[i]<>st1[j] then
begin
insert(st1[i],st1,j+1);
inc(d);
end
else
dec(j);
inc(i);
until (i>j) or (dx(st1));
write(d);
writeln;
write(st1,' ');
readln;
end.

{Đối xứng gương}


Var i,j,k,m,n,h,d,d1,d2:longint;
s,s1,s2,s3:string;
f,g:text;
Begin
assign(f,'bt.inp');reset(f);
assign(g,'bt.out');rewrite(g);
readln(f,s);
for i:=1 to length(s) do
begin
if s[i] in['A','H','M','O','T','U','V','W','X','Y'] then
inc(d);
if s[i] in['C','D','E','H','T','K','O','X'] then
inc(d1);
if s[i] in['H','I','N','O','X','Z'] then
inc(d2);
end;

======================================================= Ch 11
Chuyªn ®Ò: Gi¶i mét sè bµi to¸n vÒ sè ®èi xøng.
Trêng THCS §¹i Tù – N¨m häc 2004 – 2005.
=========================================================
if (d=0)or(d1=0)or(d2=0) then
write(g,'no')
else
begin
writeln(g,'YES');
if d=length(s) then
writeln(g,'1')
else
if d1=length(s) then
write(g,'2')
else
if d2=length(s) then
write(g,'3')
else
if (d=length(s))and(d1=length(s))and(d2=length(s)) then
write(g,'0');
end;
close(f);
close(g);
End.
PhÇn 3: KÕt luËn
Chuyªn ®Ò: “Gi¶i mét bµi To¸n vÒ sè ®èi xøng” gióp häc sinh chñ
®éng lÜnh héi kiÕn thøc h¬n, phï hîp víi viÖc ®æi míi ph¬ng ph¸p d¹y
häc hiÖn nay, ph¸t huy vai trß tÝch cùc häc tËp cña häc sinh. Kh¾c s©u
nh÷ng kiÕn thøc häc sinh tù t×m tßi, kh¸m ph¸ ®Ó chÊt lîng cña viÖc häc
bé m«n tin häc.
Qua thùc tÕ gi¶ng d¹y, chóng t«i thÊy r»ng: ViÖc t×m tßi thuËt gi¶i
mét bµi To¸n Tin lµ yªu cÇu rÊt quan träng ®èi víi bé m«n Tin häc , ®· cã
thuËt gi¶i råi th× viÖc t×m thªm lêi gi¶i míi cho bµi To¸n gióp cho gi¸o
viªn vµ häc sinh cã sù vËn dông linh ho¹t h¬n víi c¸c kiÓu vµ d¹ng bµi tËp,
lµm cho häc sinh høng thó, tÝch cùc häc tËp h¬n.
Nhng, ®ßi hái ngêi gi¸o viªn còng nh häc sinh häcm«n tin häc ph¶i
cã kiÕn thøc c¬ b¶n, v÷ng ch¾c vµ ph¶i biÕt lu«n t×m tßi vµ s¸ng t¹o
trong häc tËp
======================================================= Ch 12
Chuyªn ®Ò: Gi¶i mét sè bµi to¸n vÒ sè ®èi xøng.
Trêng THCS §¹i Tù – N¨m häc 2004 – 2005.
=========================================================
Trªn ®©y lµ mét sè bµi tËp mµ t«i ®· su tÇm biªn so¹n, mong muèn
®ãng gãp mét d¹ng bµi tËp nhá gióp cho häc sinh cã thªm mét t liÖu ®Ó
häc tËp . Chuyªn ®Ò nµy cßn h¹n chÕ vÒ thêi gian vµ cha giíi thiÖu ®îc
nhiÒu c¸ch gi¶i cho c¸c bµi to¸n hay, cha ®a ra ®îc c¸c bµi tËp cã c¸ch suy
nghÜ vµ lêi gi¶i t¬ng tù vµ kh«ng tr¸nh khái nh÷ng thiÕu sãt. T«i ®îc rÊt
mong ®îc sù gãp ý vµ bæ sung cña ®ång nghiÖp.

HÕt

======================================================= Ch 13
Chuyªn ®Ò: Gi¶i mét sè bµi to¸n vÒ sè ®èi xøng.

You might also like