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