Chuyên đề Giải một số bài toán về số đối xứng
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.
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.
=========================================================
{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
write('nhap so n=');readln(n);
i:=1;
=======================================================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.
=========================================================
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);
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]);
=======================================================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.
=========================================================
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
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
=======================================================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.
=========================================================
Stop:=(not dx)or(dx and(c=2));
If dx then
If c2 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
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);
=======================================================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.
=========================================================
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;
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
=======================================================Ch 11
Chuyên đề: Giải một số bài toán về số đối xứng.Tài liệu đính kèm:
chuyen_de_giai_mot_so_bai_toan_ve_so_doi_xung.doc



