SlideShare uma empresa Scribd logo
1 de 29
Baixar para ler offline
1
BÀI TẬP XÂU
CƠ BẢN-NÂNG CAO
THÀNH PHỐ HỒ CHÍ MINH - 2018
GV: Phạm Thị Bích Tường
Email: bichtuong2312@gmail.com
KIỂU DỮ LIỆU CÓ CẤU TRÚC TRONG PASCAL
2
MỤC LỤC
BÀI TẬP CƠ BẢN....................................................................................................................3
Bài tập 1: Nhập xâu kí tự bất kì .........................................................................................3
a) Đếm số lần xuất hiện của 1 kí tự nào đó trong câu. ...............................................3
b) Liệt kê các kí tự có mặt trong xâu cùng số lần xuất hiện của các kí tự đó.......3
Bài 2: Nhập 1 xâu kí tự........................................................................................................3
a) Xét xem trong xâu có K kí tự kề nhau mà như nhau hay không? ....................3
b) Hãy xóa đi kí tự kề nhau mà như nhau, chỉ giữ lại một.....................................3
Bài 3: Nhập 1 xâu kí tự. Kiểm tra tính đối xứng của xâu đó. Nếu xâu không đối
xứng thì đảo xâu...............................................................................................................4
Bài 4: Cho 1 xâu kí tự. Tính xem trong số đó có bao nhiêu loại kí tự khác nhau (
không phân biệt in hoa hay in thường)..........................................................................5
Bài 5: Cho 1 xâu kí tự bất kì, tính: Số lượng các kí tự số, Số lượng các kí tự chữ cái.
............................................................................................................................................6
Bài 6: Cho 1 xâu kí tự bất kì (cả số lẫn chữ). Viết chương trình tách các phần là số
của xâu trên và đưa ra 1 mảng số nguyên. ....................................................................7
Bài 7: Nhập vào 1 xâu. Biến đổi thành chữ in hoa........................................................8
Bài 8: Nhập vào 1 xâu. Biến đổi in thường....................................................................9
Bài 9: Nhập vào 1 chuỗi, in ra chuỗi ngược...................................................................9
Bài 10: Nhập vào danh sách HS 1 lớp. Sắp xếp lại danh sắp theo thứ tự tăng dần
theo chiều dài của tên. ..................................................................................................10
Bài 11: Nhập vào họ tên bất kì sau đó biến đổi các chữ cái đầu tiên là in hoa.........10
Bài 12: Nhập vào 1 đoạn văn. Tính số câu...................................................................11
Bài 13: Nhập vào 1 số, xóa bỏ các chữ số lẻ. Xuất kết quả dưới dạng đối xứng của
phần còn lại. Vd:1 2 4 5 6 --> 2 4 6 6 4 2 ......................................................................11
Bài 14: Nhập vào 1 số, xóa bỏ các chữ số chẵn. Kiểm tra số còn lại có bao nhiêu chữ
số. Xuất kết quả dưới dạng đối xứng của phần còn lại. .............................................12
Bài 15: Nhập chuỗi gồm cả chữ và số. Xuất ra màn hình các số riêng và các chữ
riêng. Hãy đếm số lần xuất hiện của mỗi chữ, mỗi số.................................................12
Bài 16: Nhập 1 xâu kí tự và bỏ đi tất cả các khoảng trống bên trái của nó..............13
Bài 17: Dùng hàm “copy”. Tách từ đầu tiên ra khỏi 1 xâu kí tự cho trước. ............14
Bài 18: Vị Giám đốc công ty XYZ cần gửi một văn bản quan trọng tới một đối tác
của mình. Để bảo mật văn bản, ông quyết định mã hóa văn bản trước khi gửi. Văn
bản là một xâu S các chữ cái la tinh in thường. Ông ta chia văn bản thành hai đoạn
liên tiếp Sb và Se. Lần lượt viết hai xâu Sb và Se nhưng đều theo thứ tự ngược lại
ông ta nhận được xâu mã hóa Q. Bức thư thứ nhất gửi cho đối tác có nội dung là Q.
Để đối tác đọc được văn bản, ông ta gửi thêm một bức thư thứ hai trong đó chứa
khóa để giải mã: độ dài k của xâu Sb...........................................................................14
Bài 19: Trong giờ học Lập trình về xử lý chuỗi. Thầy giáo có cho một bài tập như
sau: Thầy sẽ đọc họ và tên của một bạn sinh viên bất kỳ trong lớp. Công việc của
chúng ta là hãy viết một chương trình để tách Họ, Tên Lót (tên đệm), và Tên của
bạn đó ra.........................................................................................................................15
Bài tập 20: Viết chương trình thực hiện phép cộng 2 số tự nhiên lớn (không quá
255 chữ số). .....................................................................................................................16
BÀI TẬP NÂNG CAO...........................................................................................................17
Đề bài số 1.......................................................................................................................17
Đề bài 2............................................................................................................................19
3
BÀI TẬP CƠ BẢN
Bài tập 1: Nhập xâu kí tự bất kì
a) Đếm số lần xuất hiện của 1 kí tự nào đó trong câu.
b) Liệt kê các kí tự có mặt trong xâu cùng số lần xuất hiện của các kí tự
đó.
Bài giải:
uses crt;
var str:string[100];
chu:array[#1..#254] of integer;
i:integer;
ch:char;
begin
clrscr;
for ch:=#1 to #254 do chu[ch]:=0;
write(' Nhap chuoi = ');readln(str);
for i:=1 to length(str) do
(chu[upcase(str[i])]):=chu[upcase(str[i])] +1;
writeLn('Cac ki tu trong xau la:');
for ch:=#1 to #254 do
if chu[ch]>0 then writeln(ch, ': xuat hien ',chu[ch],' lan');
readln;
end.
Bài 2: Nhập 1 xâu kí tự.
a) Xét xem trong xâu có K kí tự kề nhau mà như nhau hay không?
b) Hãy xóa đi kí tự kề nhau mà như nhau, chỉ giữ lại một.
Bài giải:
uses crt;
var ch:string[100];
i,k,d,d1,n:integer;
(*****)
function xoa:boolean;
var i:integer;
begin
4
xoa:=false;
for i:=1 to length(ch)-1 do
if ch[i]=ch[i+1] then
begin
delete(ch,i,1);
xoa:=true;
exit
end;
end;
(*****)
begin
clrscr;
write('Nhap chuoi :');readln(ch);
write('Nhap ki tu K:');readln(k);
n:=length(ch);
d:=0;d1:=0;
for i:=1 to n-1 do
begin
if ch[i]=ch[i+1] then inc(d1)
else d1:=0;
if d1+1>=k then inc(d);
end;
if d>0 then writeln('Co ',k,' ki tu nhu nhau')
else writeln('Khong co ',k,' ki tu nhu nhau');
while xoa do;
write('In lai xau sau khi xoa:');
writeln(ch);
readln;
end.
Bài 3: Nhập 1 xâu kí tự. Kiểm tra tính đối xứng của xâu đó. Nếu xâu không
đối xứng thì đảo xâu.
Bài giải:
uses crt;
var str,s:string[100];
n,i:integer;
(*****)
procedure sx(var a,b:char);
var tam:char;
5
begin
tam:=a;
a:=b;
b:=tam;
end;
procedure dao(n,i:integer);
var j:integer;
begin
for j:=i+1 to n do
if str[i]=str[j] then
begin
sx(str[j],str[n-i+1]);
exit
end;
end;
(*****)
begin
clrscr;
write('Nhap xau:');readln(str);
n:=length(str);
s:='';
for i:=n downto 1 do s:=s+str[i];
if str=s then writeln('Chuoi doi xung:')
else
begin
writeln('Chuoi ko doi xung, chuoi da dao doi xung:');
for i:=1 to n-1 do
dao(n,i);
end;
writeln(str);
readln;
end.
Bài 4: Cho 1 xâu kí tự. Tính xem trong số đó có bao nhiêu loại kí tự khác
nhau ( không phân biệt in hoa hay in thường).
Bài giải:
uses crt;
var s:string;
i,j,dem:integer;
t:boolean;
6
begin
clrscr;
write('Nhap xau:');readln(s);
dem:=0;
for i:=1 to length(s) do
begin
t:=false;
for j:=1 to i-1 do
if((s[j])=(s[i])) then t:=true;
if not(t) then inc(dem);
end;
write('Co ',dem,' ki tu khac nhau.');
readln;
end.
Bài 5: Cho 1 xâu kí tự bất kì, tính: Số lượng các kí tự số, Số lượng các kí tự
chữ cái.
Bài giải:
uses crt;
const so: set of char=['0','1','2','3','4','5','6','7','8','9'];
var st,b:string;
a:array[1..100] of integer;
i,j,l,n,dem,dem1,c:integer;
(*****)
procedure sx(var x,y:integer);
var tam:integer;
begin
tam:=x;
x:=y;
y:=tam;
end;
(*****)
begin
clrscr;
write('nhap xau:');readln(st);
dem:=0;
dem1:=0;
for i:=1 to length(st) do
begin
if (st[i] in['0'..'9']) then inc(dem);
7
if (upcase(st[i]) in['A'..'Z']) then inc(dem1);
end;
write('Co ',dem1,' chu cai.');
writeln;
writeln('Co ',dem,' chu so.');
l:=length(st); i:=1; n:=0;
repeat
if (st[i] in so) then
begin
b:='';
repeat
b:=b+st[i];
inc(i);
until (not(st[i] in so)) or (i>l);
inc(n);
val(b,a[n],c);
end;
inc(i);
until i>l;
for i:=1 to n do write(a[i]:5);
writeln;
writeln('Sx tang:');
for i:=1 to n-1 do
for j:=i to n do
if a[j]<a[i] then sx(a[j],a[i]);
for i:=1 to n do write(a[i]:5);
readln;
end.
Bài 6: Cho 1 xâu kí tự bất kì (cả số lẫn chữ). Viết chương trình tách các
phần là số của xâu trên và đưa ra 1 mảng số nguyên.
Bài giải:
uses crt;
const so: set of char=['0','1','2','3','4','5','6','7','8','9'];
var a:array[1..100] of integer;
st,b:string;
c,l,i,n,j:integer;
(*****)
procedure sx(var x,y:integer);
var tam:integer;
8
begin
tam:=x;
x:=y;
y:=tam;
end;
(*****)
begin
clrscr;
write('Nhap xau:');readln(st);
l:=length(st); i:=1; n:=0;
repeat
if (st[i] in so) then
begin
b:='';
repeat
b:=b+st[i];
inc(i);
until (not(st[i] in so)) or (i>l);
inc(n);
val(b,a[n],c);
end;
inc(i);
until i>l;
for i:=1 to n do write(a[i]:5);
writeln;
write('Sx tang:');
writeln;
for i:=1 to n-1 do
for j:=i to n do
if a[j]<a[i] then sx(a[j],a[i]);
for i:=1 to n do write(a[i]:5);
readln;
end.
Bài 7: Nhập vào 1 xâu. Biến đổi thành chữ in hoa.
Bài giải:
uses crt;
var s:string;
i,k:integer;
9
begin
clrscr;
write('Nhap xau:');readln(s);
write('Bien doi in hoa:');
for i:=1 to length(s) do
write(upcase(s[i]));
readln;
end.
Bài 8: Nhập vào 1 xâu. Biến đổi in thường.
Bài giải:
uses crt;
var s:string;
i:integer;
begin
clrscr;
write('Nhap xau:');readln(s);
for i:=1 to length(s) do
if s[i] in ['A'..'Z'] then s[i]:=chr(ord(s[i])+32);
write('Bien doi thuong:',s);
readln;
end.
Bài 9: Nhập vào 1 chuỗi, in ra chuỗi ngược.
Bài giải:
uses crt;
var s:string;
i:integer;
begin
clrscr;
write('nhap chuoi:');readln(s);
write('Chuoi nguoc:');
for i:=length(s) downto 1 do write(s[i]);
readln;
end.
10
Bài 10: Nhập vào danh sách HS 1 lớp. Sắp xếp lại danh sắp theo thứ tự
tăng dần theo chiều dài của tên.
Bài giải:
uses crt;
var hs:string;
i,j,n:integer;
(******)
procedure sx(var a,b:integer);
var tam:integer;
begin
tam:=a;
a:=b;
b:=tam;
end;
(******)
begin
clrscr;
write('Nhap so HS:');readln(n);
for i:=1 to n do
begin
write('Ten HS thu ',i,' :');readln(hs[i]);
end;
for i:=1 to n-1 do
for j:=i+1 to n do
if length(hs[i]) > length(hs[j]) then sx(hs[i],hs[j]);
writeln('Sx theo do dai ten:');
for i:=1 to n do writeln(hs[i]);
readln;
end.
Bài 11: Nhập vào họ tên bất kì sau đó biến đổi các chữ cái đầu tiên là in
hoa.
Bài giải:
uses crt;
const chu=['a'..'z'];
var hoten:string;
i,k:integer;
begin
11
clrscr;
write('Nhap ho ten:');readln(hoten);
k:=length(hoten);
if hoten[1] in chu then hoten[1]:=upcase(hoten[1]);
for i:=2 to k do
if (hoten[i-1]=#32) and (hoten[i] in chu) then
hoten[i]:=upcase(hoten[i]);
write('sau khi bien doi:',hoten);
readln;
end.
Bài 12: Nhập vào 1 đoạn văn. Tính số câu.
Bài giải:
uses crt;
var s:string;
i,d:integer;
begin
clrscr;
write('Nhap 1 doan:');readln(s);
for i:=1 to length(s) do
if s[i]='.' then inc(d);
write('Doan tren co ',d,' cau.');
readln;
end.
Bài 13: Nhập vào 1 số, xóa bỏ các chữ số lẻ. Xuất kết quả dưới dạng đối
xứng của phần còn lại.
Vd:1 2 4 5 6 --> 2 4 6 6 4 2
Bài giải:
uses crt;
const so=['1','3','5','7','9'];
var s:string;
i:integer;
begin
clrscr;
write('Nhap 1 day so:');readln(s);
i:=1;
while i<=length(s) do
if s[i] in so then
begin
12
delete(s,i,1);
i:=1;
end
else inc(i);
write('Sau khi xoa cac so le va bien doi doi xung:',s);
for i:=length(s) downto 1 do write(s[i]);
readln;
end.
Bài 14: Nhập vào 1 số, xóa bỏ các chữ số chẵn. Kiểm tra số còn lại có bao
nhiêu chữ số. Xuất kết quả dưới dạng đối xứng của phần còn lại.
Bài giải:
uses crt;
const so=['0','2','4','6','8'];
var s:string;
i,dem:integer;
begin
clrscr;
dem:=0;
write('Nhap 1 day so:');readln(s);
i:=1;
while i<= length(s) do
if s[i] in so then
begin
delete(s,i,1);
i:=1;
end
else inc(i);
for i:=1 to length(s) do dem:=dem+1;
writeln('Sau khi xoa cac so chan con ',dem,' so le .');
write('Sau khi xoa cac so chan va bien doi doi xung :',s,' ');
for i:=length(s) downto 1 do write(s[i]);
readln;
end.
Bài 15: Nhập chuỗi gồm cả chữ và số. Xuất ra màn hình các số riêng và các
chữ riêng. Hãy đếm số lần xuất hiện của mỗi chữ, mỗi số.
Bài giải:
uses crt;
13
var s:string;
dem:array[#1..#254] of integer;
i:integer;
chu:char;
begin
clrscr;
write('Nhap chuoi gom chu va so:');readln(s);
for chu:=#1 to #254 do dem[chu]:=0;
writeln('Chu:');
for i:=1 to length(s) do
if upcase(s[i]) in ['A'..'Z'] then
begin
write(s[i]);
dem[upcase(s[i])]:=dem[upcase(s[i])] +1;
end;
writeln;
writeln('So:');
for i:=1 to length(s) do
if s[i] in ['0'..'9'] then
begin
write(s[i]);
dem[s[i]]:=dem[s[i]] +1;
end;
writeln;
for chu:=#1 to #254 do
if dem[chu]<>0 then writeln(chu,' xuat hien ',dem[chu],' lan');
readln;
end.
Bài 16: Nhập 1 xâu kí tự và bỏ đi tất cả các khoảng trống bên trái của nó.
Bài giải:
uses crt;
var s,t:string;
i,p:integer;
begin
clrscr;
write('Nhap chuoi:');readln(s);
writeln('khoang trong ben trai cua chuoi da bo, chuoi:');
while s[1]=#32 do delete(s,1,1);
write(s);
14
readln;
end.
Bài 17: Dùng hàm “copy”. Tách từ đầu tiên ra khỏi 1 xâu kí tự cho trước.
Bài giải:
uses crt;
var s:string;
i:integer;
begin
clrscr;
write('Nhap chuoi:');readln(s);
writeln('Tach tu dau tien ra khoai xau:');
write(copy(s,1,1));
readln;
end.
Bài 18: Vị Giám đốc công ty XYZ cần gửi một văn bản quan trọng tới một
đối tác của mình. Để bảo mật văn bản, ông quyết định mã hóa văn bản
trước khi gửi. Văn bản là một xâu S các chữ cái la tinh in thường. Ông ta
chia văn bản thành hai đoạn liên tiếp Sb và Se. Lần lượt viết hai xâu Sb và
Se nhưng đều theo thứ tự ngược lại ông ta nhận được xâu mã hóa Q. Bức
thư thứ nhất gửi cho đối tác có nội dung là Q. Để đối tác đọc được văn bản,
ông ta gửi thêm một bức thư thứ hai trong đó chứa khóa để giải mã: độ dài
k của xâu Sb.
Ví dụ nội dung bức thư S = ’programming’ với với khóa k= 7 sẽ được
chia thành 2 đoạn: Sb = ’program’, Se = ’ming’, nhận được xâu mã hóa
Q = ’margorpgnim’.
Yêu cầu: Cho xâu mã hóa Q và khóa k, hãy xác định xâu S (k≥ 0 và không vượt
quá độ dài xâu S).
Dữ liệu nhập:
- Dòng thứ nhất chứa xâu mã hóa Q có độ dài từ 1 đến 250.
- Dòng thứ hai chứa khóa k.
Dữ liệu xuất:
- Là xâu S tìm được.
var k,n,i :longint;
S,l:string;
begin
read(s);
read(n);
For i:=n downto 1 do
15
l:=l+s[i];
for i:=length(s) downto n+1 do
l:=l+s[i];
WRITE(L);
end.
Bài 19: Trong giờ học Lập trình về xử lý chuỗi. Thầy giáo có cho một bài
tập như sau: Thầy sẽ đọc họ và tên của một bạn sinh viên bất kỳ trong lớp.
Công việc của chúng ta là hãy viết một chương trình để tách Họ, Tên Lót
(tên đệm), và Tên của bạn đó ra
Input:
Một chuỗi duy nhất là họ tên của bạn sinh viên mà thầy đọc.
Lưu ý: Họ tên có thể chỉ gồm họ và tên (không có tên lót), hoặc đầy đủ họ, lót,
tên.
Output:
Dòng 1: Xuất ra họ
Dòng 2: Xuất ra tên lót (nếu có).
Dòng 3: Xuất ra tên.
var ht,ten,ho,lot:string;
i,n,d:longint;
begin
read(ht);
lot:='';
ho:='';
ten:=ht;
n:=length(ht);
for i:=n downto 1 do
if ten[i]=' ' then
begin
delete(ten,1,i);
break;
end;
for i:=length(ht) downto n-length(ten) do
begin
if ht[i]<>' ' then delete(ht,i,1);
if ht[i]=' ' then break;
end;
i:=1;
while i<=length(ht) do
begin
16
if ht[i]<>' ' then ho:=ho+ht[i];
if ht[i]=' ' then break;
inc(i);
end;
for i:=length(ho)+1 to length(ht) do
lot:=lot+ht[i];
writeln('Ho:', ho);
if (lot <> ' ') then writeln('Lot:', lot);
writeln('Ten:', ten);
readln;
end.
Bài tập 20: Viết chương trình thực hiện phép cộng 2 số tự nhiên lớn (không
quá 255 chữ số).
Uses crt;
Var so1,so2,kqua:string;
Procedure LamDayXau(Var st1,st2:string);
{Them so 0 vao truoc xau ngan}
var i:Byte;
Begin
If Length(st1)>Length(st2) Then
For i:=1 To Length(st1)-Length(st2) Do st2:='0'+st2
Else
For i:=1 To Length(st2)-Length(st1) Do st1:='0'+st1;
End;
Function Cong(st1,st2:string):string;
Var i,a,b,c,sodu:Byte;
code:integer;
st,ch:string;
Begin
st:=''; sodu:=0;
LamDayXau(st1,st2);
{Lấy từng số của 2 xâu: từ phải sang trái}
For i:=Length(st1) DownTo 1 Do
Begin
{Đổi ký tự sang số nguyên}
Val(st1[i],a,code);
Val(st2[i],b,code);
{Tính tổng của 2 số a,b vừa lấy ra cho vào biến c}
17
c:=(a+b+sodu) MOD 10;
{Lấy phần dư của tổng a+b}
sodu:=(a+b+sodu) DIV 10;
{Đổi số nguyên c sang xâu ký tự ch}
str(c,ch);
{Cộng xâu ch vào bên trái xâu kết quả st}
st:=ch+st;
End;
{Xử lý trường hợp số dư cuối cùng >0}
If sodu>0 Then
Begin
str(sodu,ch);
st:=ch+st;
End;
Cong:=st;
End;
Begin
Write('Nhap so thu nhat: '); Readln(so1);
Write('Nhap so thu hai: '); Readln(so2);
kqua:=Cong(so1,so2);
Writeln('Tong= ',kqua);
Readln;
End
BÀI TẬP NÂNG CAO
Đề bài số 1
Ngày nay, việc sử dụng bàn phím điện thoại di động để nhấn các số đã trở
thành một việc rất quen thuộc với các bạn sinh viên. Ai cũng biết các phím
số trên điện thoại cũng là các phím dùng để nhấn các chữ cái:
2: ABC, 3: DEF, 4: GHI, 5: JKL, 6: MNO, 7: PQRS, 8: TUV, 9: WXYZ
Nam viết ra giấy một dãy ký tự và đố Bình xác định đó là dãy số nào theo
cách nhấn số trên điện thoại (chỉ xem xét sự tương ứng giữa số và ký tự
chứ không xem xét phải nhấn bao nhiêu lần phím đó, ví dụ cả A, B, C đều
là một số 2).
Bình rất nhanh chóng xác định được kết quả, không những thế Bình còn
muốn xác định nhanh xem số đó có phải là số dạng thuận nghịch hay
không. Một số là thuận nghịch nếu viết theo thứ tự ngược lại cũng là chính
nó. Hãy viết chương trình giúp Bình thực hiện công việc trên.
18
Input
Dòng đầu tiên chứa số n là số bộ test (không quá 1000).
Mỗi bộ test viết trên một dòng một dãy ký tự gồm các chữ cái có thể là chữ hoa
hoặc chữ thường, dài không quá 20 ký tự, không có khoảng trống.
Output
Với mỗi bộ test, in ra màn hình, trên một dòng, chữ “YES” nếu đó tương ứng là
số thuận nghịch, chữ “NO” nếu ngược lại.
Chương trình tham khảo
const fi='';
type data=longint;
var
f:text;
s:string;
i,test,j:data;
function tinh(c:char):char;
begin
c:=upcase(c);
case c of
'A'..'C': exit('2');
'D'..'F': exit('3');
'G'..'I': exit('4');
'J'..'L': exit('5');
'M'..'O': exit('6');
'P'..'S': exit('7');
'T'..'V': exit('8');
'W'..'Z': exit('9');
end;
end;
function check:boolean;
var i:data;
st,sk:string;
begin
st:='';
sk:='';
for i:=1 to length(s) do
begin
st:=tinh(s[i])+st;
sk:=sk+tinh(s[i]);
end;
if st=sk then
19
writeln('YES')
else
writeln('NO');
end;
begin
assign(f,fi); reset(f);
readln(f,test);
for i:=1 to test do
begin
readln(f,s);
check;
end;
end.
Đề bài 2
Hệ điều hành XP cho phép điều khiển cùng lúc hai bàn phím. Hai anh em
Tuấn và Nam vừa được thưởng một máy tính mới nên rất muốn thử tính
năng này của XP. Tuấn và Nam, mỗi người dùng một bàn phím và đồng
thời gõ vào một từ đang nghĩ trong đầu tương ứng là S1 và S2. Do gõ đồng
thời và tốc độ gõ khác nhau nên kết quả là trên màn hình hiện ra một chuỗi
ký tự S là kết hợp của các ký tự trong S1 và S2. Các ký tự này đan xen
nhau theo một trình tự nào đó khiến Tuấn và Nam không còn nhận ra ký
tự nào do mình đã gõ.
Yêu cầu
Hãy giúp Tuấn và Nam xác định những ký tự nào có thể là của mình theo nghĩa
nếu tách những ký tự đó ra và ghép lại theo đúng thứ tự thì ta nhận được đúng
từ mà Tuấn và Nam đã gõ.
Dữ Liệu
Dữ liệu vào gồm 3 dòng, trong đó:
Dòng đầu tiên chứa từ S1 do Tuấn đã gõ. Dòng thứ hai chứa từ S2 do Nam đã
gõ.
Dòng cuối cùng chứa chuỗi S. S1 và S2 chỉ chứa các chữ cái latin (a, A, b, B.. )
và số lượng ký tự trong mỗi chuỗi không vượt quá 100.
Kết Quả
Kết quả ghi ra chỉ có một dòng duy nhất chứa chuỗi ký tự có chiều dài bằng
chiều dài chuỗi S, trong đó ký tự thứ I sẽ bằng ký tự ′1′ nếu ký tự tương ứng
S[I] do Tuấn gõ và bằng ′2′ nếu S[I] do Nam gõ.
20
Trong trường hợp có nhiều hơn một kết quả thì in ra dãy có thứ tự từ điển bé
nhất.
Ví Dụ
Input:
papa
mama
mpapamaa
Output:
21112212
2. Hướng dẫn giải NKH spoj – Tách Từ
– Xây dựng thủ tục đệ quy try(i,kt1,kt2) với ý nghĩa tìm kết quả kí tự thứ i của
xâu S khi chọn kí tự s1[kt1] hoặc s2[kt2] để ghép vào vị trí đó
Code tham khảo
const fi='';
nmax=200;
type data=longint;
var
f:text;
s1,s2,s3:string;
n,m:data;
tr:array[0..nmax+1] of data;
procedure docfile;
var i,j:data;
begin
assign(f,fi); reset(f);
readln(f,s1); n:=length(s1);
readln(f,s2); m:=length(s2);
readln(f,s3);
close(f);
end;
procedure try(i,kt1,kt2:data); // sinh ki tu thu i
var j:data;
begin
if i>m+n then
begin
for j:=1 to m+n do
write(tr[j]);
halt;
end
21
else
begin
if s3[i]=s1[kt1] then
begin
tr[i]:=1;
try(i+1,kt1+1,kt2);
end;
if s3[i]=s2[kt2] then
begin
tr[i]:=2;
try(i+1,kt1,kt2+1);
end;
end;
end;
begin
docfile;
try(1,1,1);
end.
Đề bài 3: NKH spoj
Hệ điều hành XP cho phép điều khiển cùng lúc hai bàn phím. Hai anh em
Tuấn và Nam vừa được thưởng một máy tính mới nên rất muốn thử tính
năng này của XP. Tuấn và Nam, mỗi người dùng một bàn phím và đồng
thời gõ vào một từ đang nghĩ trong đầu tương ứng là S1 và S2. Do gõ đồng
thời và tốc độ gõ khác nhau nên kết quả là trên màn hình hiện ra một
chuỗi ký tự S là kết hợp của các ký tự trong S1 và S2. Các ký tự này đan
xen nhau theo một trình tự nào đó khiến Tuấn và Nam không còn nhận ra
ký tự nào do mình đã gõ.
Yêu cầu
Hãy giúp Tuấn và Nam xác định những ký tự nào có thể là của mình theo nghĩa
nếu tách những ký tự đó ra và ghép lại theo đúng thứ tự thì ta nhận được đúng
từ mà Tuấn và Nam đã gõ.
Dữ Liệu
Dữ liệu vào gồm 3 dòng, trong đó:
Dòng đầu tiên chứa từ S1 do Tuấn đã gõ. Dòng thứ hai chứa từ S2 do Nam đã
gõ.
Dòng cuối cùng chứa chuỗi S. S1 và S2 chỉ chứa các chữ cái latin (a, A, b, B.. )
và số lượng ký tự trong mỗi chuỗi không vượt quá 100.
Kết Quả
22
Kết quả ghi ra chỉ có một dòng duy nhất chứa chuỗi ký tự có chiều dài bằng
chiều dài chuỗi S, trong đó ký tự thứ I sẽ bằng ký tự ′1′ nếu ký tự tương ứng
S[I] do Tuấn gõ và bằng ′2′ nếu S[I] do Nam gõ.
Trong trường hợp có nhiều hơn một kết quả thì in ra dãy có thứ tự từ điển bé
nhất.
Ví Dụ
Input:
papa
mama
mpapamaa
Output:
21112212
2. Hướng dẫn giải NKH spoj – Tách Từ
– Xây dựng thủ tục đệ quy try(i,kt1,kt2) với ý nghĩa tìm kết quả kí tự thứ i của
xâu S khi chọn kí tự s1[kt1] hoặc s2[kt2] để ghép vào vị trí i đó.
Code tham khảo
const fi='';
nmax=200;
type data=longint;
var
f:text;
s1,s2,s3:string;
n,m:data;
tr:array[0..nmax+1] of data;
procedure docfile;
var i,j:data;
begin
assign(f,fi); reset(f);
readln(f,s1); n:=length(s1);
readln(f,s2); m:=length(s2);
readln(f,s3);
close(f);
end;
procedure try(i,kt1,kt2:data); // sinh ki tu thu i
var j:data;
begin
if i>m+n then
begin
for j:=1 to m+n do
23
write(tr[j]);
halt;
end
else
begin
if s3[i]=s1[kt1] then
begin
tr[i]:=1;
try(i+1,kt1+1,kt2);
end;
if s3[i]=s2[kt2] then
begin
tr[i]:=2;
try(i+1,kt1,kt2+1);
end;
end;
end;
begin
docfile;
try(1,1,1);
end.
Đề bài 4: P156SUME spoj
Một chuỗi a được gọi là ước của chuỗi b nếu tồn tại một số nguyên dương
x sao cho khi ta viết x lần chuỗi a thì sẽ thu được chuỗi b. Ví dụ chuỗi
“abab” có 2 ước là “ab” và “abab”.
Bạn được cho 2 cho 2 chuỗi s1 và s2, hãy đếm xem chúng có tất cả bao
nhiêu ước chung?
Input
Dòng đầu tiên là 1 chuỗi s1, dòng thứ 2 là chuỗi s2.
Cả 2 chuỗi đều gồm các chữ cái thường, độ dài 2 chuỗi không quá 105
.
Output
In ra một số nguyên là kết quả của bài toán.
Example
Test 1:
Input:
xyztxyzt
xyzt
Output:
1
24
Test 2:
Input:
aaa
aa
Output:
1
Hướng dẫn giải P156SUME spoj PTIT
– Gọi n1, n2 là độ dài của 2 xâu s1, s2.
– độ dài ước của xâu sẽ là [1..độ dài xâu], mà ở bài này ta cần xâu chung, như
vậy ta chỉ cần xét các xâu có độ dài từ [1..min(n1,n2)]. và xâu có độ dài i có
khả năng là ước của xâu khi n1 mod i=0 và n2 mod i = 0.
– Xét mỗi độ dài xâu ước, hãy kiểm tra xem xâu có độ dài i có phải là ước hay
không? và kiểm tra ước trên s1, s2 giống nhau không.
– Đếm kết quả bài toán…
const fi='';
nmax=100000;
type data=longint;
var
f:text;
n1,n2:data;
s1,s2:ansistring;
procedure docfile;
begin
assign(f,fi); reset(f);
readln(f,s1);
readln(f,s2);
n1:=length(s1);
n2:=length(s2);
close(f);
end;
function min(a,b:data):data;
begin
if a<b then exit(a); exit(b);
end;
procedure xuli;
var i,j:data;
st1,st2,x1,x2:ansistring;
25
res:data;
begin
res:=0;
for i:=1 to min(n1,n2) do
if (n1 mod i = 0) and (n2 mod i=0) then
begin
st1:=copy(s1,1,i);
st2:=copy(s2,1,i);
if st1<>st2 then continue;
x1:='';
for j:=1 to n1 div i do
x1:=x1+st1;
if x1<>s1 then continue;
x2:='';
for j:=1 to n2 div i do
x2:=x2+st2;
if x2<>s2 then continue;
inc(res);
end;
writeln(res);
end;
begin
docfile;
xuli;
end.
Đề bài 5: P156PROE spoj
Cho trước dãy ký tự:
ABCDEFGHIJKLMNOPQRSTUVWXYZ_.
Phép dịch K trong dãy này được định nghĩa là đẩy một ký tự đi K vị trí.
Ví dụ: phép dịch 1 là ‘A’→’B’, ‘B’→’C’, …, ‘Z’→’_’, ‘_’→’.’, và ‘.’→’A’.
Phép dịch 3 là: ‘A’→’D’, ‘B’→’E’, …, ‘.’→’C’.
Bài toán đặt ra là cho trước số nguyên K và một xâu ký tự, hãy ghi ra kết
quả phép dịch K tương ứng của xâu đó sau khi đã đảo ngược thứ tự các
chữ cái.
Input
Mỗi bộ test ghi trên một dòng số nguyên 1<=N<=27, tiếp theo là khoảng trống
rồi đến xâu S (không quá 40 ký tự và chỉ bao gồm các chữ cái in hoa).
Bộ test cuối cùng có một số 0.
Output
26
Với mỗi bộ test, ghi ra kết quả phép dịch sau khi đã đảo ngược thứ tự các chữ
cái.
Example
Input:
1 ABCD
3 YO_THERE.
1 .DOT
14 ROAD
9 SHIFTING_AND_ROTATING_IS_NOT_ENCRYPTING
2 STRING_TO_BE_CONVERTED
1 SNQZDRQDUDQ
0
Output:
EDCB
CHUHKWBR.
UPEA
ROAD
PWRAYF_LWNHAXWH.RHPWRAJAX_HMWJHPWRAORQ.
FGVTGXPQEAGDAQVAIPKTVU
REVERSE_ROT
const fi='';
D:array[1..28] of char =
('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q'
,'R','S','T','U','V','W','X','Y','Z','_','.');
type data=longint;
var
F:text;
n:data;
s:string;
function func(c:char; k:data):char;
var vt:data;
begin
if c='_' then
vt:=27
else
if c='.' then
vt:=28
else
vt:=ord(c)-64;
if vt+k>28 then
27
exit(d[vt+k-28]);
exit(d[vt+k]);
end;
procedure xuli;
var i,j:data;
begin
for i:=length(s) downto 1 do
write(func(s[i],n));
writeln;
end;
procedure docfile;
var i,j:data;
z:char;
begin
assign(f,fi); reset(f);
repeat
read(f,n);
if n=0 then break;
read(f,z);
readln(f,s);
xuli;
until FALSE;
close(f);
end;
begin
docfile;
end.
Đề bài 6: P151SUMI spoj
Tèo đi học và bỏ lỡ không xem được trận tranh huy chương đồng của
seagame giữa Việt Nam và Indonesia. Cậu tiếc ngẩn, tiếc ngơ, cũng may
thay bạn cậu là Tí xem được trận này và mỗi khi có bàn thằng cậu lại ghi
tên đội ghi bàn vào một tờ giấy, với tờ giấy Tèo đã biết được đội thắng.
Giờ đây Tỉ giả sử với những tờ giấy bất kì như vậy, cậu cần biết ngay đội
thắng mà không cần nhọc công xem lại từ đầu đến cuối, các bọn giúp tí
giảm bớt công sức nhé.
Input
Dòng đầu tiên là số nguyên n(1 <= n <= 100) là số bàn thằng của trận đấu.
28
n dòng tiếp theo, mỗi dòng là tên đội bóng ghi bàn.(Tên đội viết hoa, không
quá 10 kí tự)
Đầu vào đảm bảo chứa không quá 2 đội và trận đấu không kết thúc với tỉ số
hòa.
Output
Tên đội thằng
Example
Input:
5
Vietnam
Vietnam
Vietnam
Vietnam
Vietnam
Output:
Vietnam
Code tham khảo
const fi='';
type data=longint;
var
f:text;
s1,s2,s:string;
n,d1,d2,i:data;
begin
assign(f,fi); reset(f);
readln(f,n);
s2:='';
d1:=1;
d2:=0;
readln(f,s1);
for i:=1 to n-1 do
begin
readln(f,s);
if (s2='') and (s<>s1) then
begin
s2:=s;
d2:=1;
end
else
begin
if s=s1 then
29
inc(d1)
else
inc(d2);
end;
end;
close(f);
if d1>d2 then
writeln(s1)
else
writeln(s2);
end.

Mais conteúdo relacionado

Mais procurados

Đề thi Kỹ thuật lập trình có lời giải
Đề thi Kỹ thuật lập trình có lời giảiĐề thi Kỹ thuật lập trình có lời giải
Đề thi Kỹ thuật lập trình có lời giảinataliej4
 
Biến ngẫu nhiên liên tục - Xác suất thống kê
Biến ngẫu nhiên liên tục - Xác suất thống kêBiến ngẫu nhiên liên tục - Xác suất thống kê
Biến ngẫu nhiên liên tục - Xác suất thống kêVuKirikou
 
Bài tập mẫu C và C++ có giải
Bài tập mẫu C và C++ có giảiBài tập mẫu C và C++ có giải
Bài tập mẫu C và C++ có giảiTrung Thanh Nguyen
 
Giai sach bai tap xstk dh ktqd chuong 1 full v1
Giai sach bai tap xstk dh ktqd chuong 1 full v1Giai sach bai tap xstk dh ktqd chuong 1 full v1
Giai sach bai tap xstk dh ktqd chuong 1 full v1Ngọc Ánh Nguyễn Thị
 
Hd th sql server_tuan5_n_khanh
Hd th sql server_tuan5_n_khanhHd th sql server_tuan5_n_khanh
Hd th sql server_tuan5_n_khanhHai Rom
 
Phương pháp nhánh cận
Phương pháp nhánh cậnPhương pháp nhánh cận
Phương pháp nhánh cậnDiên Vĩ
 
Bài Giảng Đại Số Tuyến Tính - ĐH Thăng Long
Bài Giảng Đại Số Tuyến Tính - ĐH Thăng LongBài Giảng Đại Số Tuyến Tính - ĐH Thăng Long
Bài Giảng Đại Số Tuyến Tính - ĐH Thăng LongHoàng Như Mộc Miên
 
Bài tập nhập môn lập trình
Bài tập nhập môn lập trìnhBài tập nhập môn lập trình
Bài tập nhập môn lập trìnhHuy Rùa
 
KTMT Số Nguyên - Số Chấm Động
KTMT Số Nguyên - Số Chấm ĐộngKTMT Số Nguyên - Số Chấm Động
KTMT Số Nguyên - Số Chấm ĐộngDavid Nguyen
 
Chuong 2. de quy dai hoc
Chuong 2. de quy   dai hocChuong 2. de quy   dai hoc
Chuong 2. de quy dai hocVũ Nam
 
Đề thi mẫu trắc nghiệm cấu trúc dữ liệu cà giải thuật
Đề thi mẫu trắc nghiệm cấu trúc dữ liệu cà giải thuậtĐề thi mẫu trắc nghiệm cấu trúc dữ liệu cà giải thuật
Đề thi mẫu trắc nghiệm cấu trúc dữ liệu cà giải thuậtHưởng Nguyễn
 
Lap trinh-huong-doi-tuong-bang-c#
Lap trinh-huong-doi-tuong-bang-c#Lap trinh-huong-doi-tuong-bang-c#
Lap trinh-huong-doi-tuong-bang-c#Thanhlanh nguyen
 
30 bài toán phương pháp tính
30 bài toán phương pháp tính30 bài toán phương pháp tính
30 bài toán phương pháp tínhPham Huy
 
Ôn thi mạng máy tính
Ôn thi mạng máy tínhÔn thi mạng máy tính
Ôn thi mạng máy tínhKinhDinhBach
 
Bài thuyết trình về email
Bài thuyết trình về emailBài thuyết trình về email
Bài thuyết trình về emailLường Đại
 
Mật thư trò chơi lớn (tóm tắt)
Mật thư trò chơi lớn (tóm tắt)Mật thư trò chơi lớn (tóm tắt)
Mật thư trò chơi lớn (tóm tắt)Tan Tran
 
Giáo trình xử lý ảnh
Giáo trình xử lý ảnhGiáo trình xử lý ảnh
Giáo trình xử lý ảnhTùng Trần
 

Mais procurados (20)

Đề thi Kỹ thuật lập trình có lời giải
Đề thi Kỹ thuật lập trình có lời giảiĐề thi Kỹ thuật lập trình có lời giải
Đề thi Kỹ thuật lập trình có lời giải
 
Biến ngẫu nhiên liên tục - Xác suất thống kê
Biến ngẫu nhiên liên tục - Xác suất thống kêBiến ngẫu nhiên liên tục - Xác suất thống kê
Biến ngẫu nhiên liên tục - Xác suất thống kê
 
Chuong04
Chuong04Chuong04
Chuong04
 
Bài tập mẫu C và C++ có giải
Bài tập mẫu C và C++ có giảiBài tập mẫu C và C++ có giải
Bài tập mẫu C và C++ có giải
 
Giai sach bai tap xstk dh ktqd chuong 1 full v1
Giai sach bai tap xstk dh ktqd chuong 1 full v1Giai sach bai tap xstk dh ktqd chuong 1 full v1
Giai sach bai tap xstk dh ktqd chuong 1 full v1
 
Hd th sql server_tuan5_n_khanh
Hd th sql server_tuan5_n_khanhHd th sql server_tuan5_n_khanh
Hd th sql server_tuan5_n_khanh
 
Phương pháp nhánh cận
Phương pháp nhánh cậnPhương pháp nhánh cận
Phương pháp nhánh cận
 
Bài Giảng Đại Số Tuyến Tính - ĐH Thăng Long
Bài Giảng Đại Số Tuyến Tính - ĐH Thăng LongBài Giảng Đại Số Tuyến Tính - ĐH Thăng Long
Bài Giảng Đại Số Tuyến Tính - ĐH Thăng Long
 
Toán lớp 5 - Chuyên đề về phân số
Toán lớp 5 - Chuyên đề về phân sốToán lớp 5 - Chuyên đề về phân số
Toán lớp 5 - Chuyên đề về phân số
 
Bài tập nhập môn lập trình
Bài tập nhập môn lập trìnhBài tập nhập môn lập trình
Bài tập nhập môn lập trình
 
KTMT Số Nguyên - Số Chấm Động
KTMT Số Nguyên - Số Chấm ĐộngKTMT Số Nguyên - Số Chấm Động
KTMT Số Nguyên - Số Chấm Động
 
Chuong 2. de quy dai hoc
Chuong 2. de quy   dai hocChuong 2. de quy   dai hoc
Chuong 2. de quy dai hoc
 
Bài giảng Assembly
Bài giảng AssemblyBài giảng Assembly
Bài giảng Assembly
 
Đề thi mẫu trắc nghiệm cấu trúc dữ liệu cà giải thuật
Đề thi mẫu trắc nghiệm cấu trúc dữ liệu cà giải thuậtĐề thi mẫu trắc nghiệm cấu trúc dữ liệu cà giải thuật
Đề thi mẫu trắc nghiệm cấu trúc dữ liệu cà giải thuật
 
Lap trinh-huong-doi-tuong-bang-c#
Lap trinh-huong-doi-tuong-bang-c#Lap trinh-huong-doi-tuong-bang-c#
Lap trinh-huong-doi-tuong-bang-c#
 
30 bài toán phương pháp tính
30 bài toán phương pháp tính30 bài toán phương pháp tính
30 bài toán phương pháp tính
 
Ôn thi mạng máy tính
Ôn thi mạng máy tínhÔn thi mạng máy tính
Ôn thi mạng máy tính
 
Bài thuyết trình về email
Bài thuyết trình về emailBài thuyết trình về email
Bài thuyết trình về email
 
Mật thư trò chơi lớn (tóm tắt)
Mật thư trò chơi lớn (tóm tắt)Mật thư trò chơi lớn (tóm tắt)
Mật thư trò chơi lớn (tóm tắt)
 
Giáo trình xử lý ảnh
Giáo trình xử lý ảnhGiáo trình xử lý ảnh
Giáo trình xử lý ảnh
 

Semelhante a Bài tập xâu cơ bản-nâng cao

Tuyen tap-37-de-thi-hoc-ki-1-mon-toan-lop-2
Tuyen tap-37-de-thi-hoc-ki-1-mon-toan-lop-2Tuyen tap-37-de-thi-hoc-ki-1-mon-toan-lop-2
Tuyen tap-37-de-thi-hoc-ki-1-mon-toan-lop-2Duc Huy
 
Đề Thi HK2 Toán 9 - TH THCS THPT  Ngô Thời Nhiệm
Đề Thi HK2 Toán 9 - TH THCS THPT  Ngô Thời NhiệmĐề Thi HK2 Toán 9 - TH THCS THPT  Ngô Thời Nhiệm
Đề Thi HK2 Toán 9 - TH THCS THPT  Ngô Thời NhiệmTrung Tâm Gia Sư Việt Trí
 
Bài tập cuối tuần Toán - Tiếng Việt Lớp 4 - Tuần 2
Bài tập cuối tuần Toán - Tiếng Việt Lớp 4 - Tuần 2Bài tập cuối tuần Toán - Tiếng Việt Lớp 4 - Tuần 2
Bài tập cuối tuần Toán - Tiếng Việt Lớp 4 - Tuần 2phamnhakb
 
10 đề kiểm tra giữa học kỳ 1 môn Toán lớp 5 | iHoc.me - Đề thi môn toán
10 đề kiểm tra giữa học kỳ 1 môn Toán lớp 5 | iHoc.me - Đề thi môn toán10 đề kiểm tra giữa học kỳ 1 môn Toán lớp 5 | iHoc.me - Đề thi môn toán
10 đề kiểm tra giữa học kỳ 1 môn Toán lớp 5 | iHoc.me - Đề thi môn toánhaic2hv.net
 
Sáng tạo trong thuật toán và lập trình Pascal và C#
Sáng tạo trong thuật toán và lập trình Pascal và C#Sáng tạo trong thuật toán và lập trình Pascal và C#
Sáng tạo trong thuật toán và lập trình Pascal và C#Dương Tuấn
 
Đề Thi HK2 Toán 9 - TH THCS THPT Ngô Thời Nhiệm
Đề Thi HK2 Toán 9 - TH THCS THPT Ngô Thời NhiệmĐề Thi HK2 Toán 9 - TH THCS THPT Ngô Thời Nhiệm
Đề Thi HK2 Toán 9 - TH THCS THPT Ngô Thời NhiệmTrung Tâm Gia Sư Việt Trí
 
[Pascal] sang tao2(v5.10)
[Pascal] sang tao2(v5.10)[Pascal] sang tao2(v5.10)
[Pascal] sang tao2(v5.10)MasterCode.vn
 
Bài giảng chuyên đề - Lê Minh Hoàng
Bài giảng chuyên đề - Lê Minh HoàngBài giảng chuyên đề - Lê Minh Hoàng
Bài giảng chuyên đề - Lê Minh HoàngBình Trọng Án
 
De cuong toan 2 chan troi sang tao
De cuong toan 2 chan troi sang taoDe cuong toan 2 chan troi sang tao
De cuong toan 2 chan troi sang taoNhungPhmHng2
 
Bài tập nhập môn lập trình
Bài tập nhập môn lập trìnhBài tập nhập môn lập trình
Bài tập nhập môn lập trìnhLong Kingnam
 
Bai tap pascal co giai
Bai tap pascal co giaiBai tap pascal co giai
Bai tap pascal co giaitrungdha
 
[Pascal] sang tao1[v5.10]
[Pascal] sang tao1[v5.10][Pascal] sang tao1[v5.10]
[Pascal] sang tao1[v5.10]MasterCode.vn
 

Semelhante a Bài tập xâu cơ bản-nâng cao (20)

Bai12 kieuxau
Bai12 kieuxauBai12 kieuxau
Bai12 kieuxau
 
Tuyen tap-37-de-thi-hoc-ki-1-mon-toan-lop-2
Tuyen tap-37-de-thi-hoc-ki-1-mon-toan-lop-2Tuyen tap-37-de-thi-hoc-ki-1-mon-toan-lop-2
Tuyen tap-37-de-thi-hoc-ki-1-mon-toan-lop-2
 
Đề Thi HK2 Toán 9 - TH THCS THPT  Ngô Thời Nhiệm
Đề Thi HK2 Toán 9 - TH THCS THPT  Ngô Thời NhiệmĐề Thi HK2 Toán 9 - TH THCS THPT  Ngô Thời Nhiệm
Đề Thi HK2 Toán 9 - TH THCS THPT  Ngô Thời Nhiệm
 
Bài tập cuối tuần Toán - Tiếng Việt Lớp 4 - Tuần 2
Bài tập cuối tuần Toán - Tiếng Việt Lớp 4 - Tuần 2Bài tập cuối tuần Toán - Tiếng Việt Lớp 4 - Tuần 2
Bài tập cuối tuần Toán - Tiếng Việt Lớp 4 - Tuần 2
 
30 de thi hsg toan l2
30 de thi hsg toan l230 de thi hsg toan l2
30 de thi hsg toan l2
 
10 đề kiểm tra giữa học kỳ 1 môn Toán lớp 5 | iHoc.me - Đề thi môn toán
10 đề kiểm tra giữa học kỳ 1 môn Toán lớp 5 | iHoc.me - Đề thi môn toán10 đề kiểm tra giữa học kỳ 1 môn Toán lớp 5 | iHoc.me - Đề thi môn toán
10 đề kiểm tra giữa học kỳ 1 môn Toán lớp 5 | iHoc.me - Đề thi môn toán
 
49 ĐỀ ÔN THI HK1 - TOÁN 5
49 ĐỀ ÔN THI HK1 - TOÁN 549 ĐỀ ÔN THI HK1 - TOÁN 5
49 ĐỀ ÔN THI HK1 - TOÁN 5
 
Khao sat
Khao satKhao sat
Khao sat
 
Khao sat
Khao satKhao sat
Khao sat
 
Sáng tạo trong thuật toán và lập trình Pascal và C#
Sáng tạo trong thuật toán và lập trình Pascal và C#Sáng tạo trong thuật toán và lập trình Pascal và C#
Sáng tạo trong thuật toán và lập trình Pascal và C#
 
Đề Thi HK2 Toán 9 - TH THCS THPT Ngô Thời Nhiệm
Đề Thi HK2 Toán 9 - TH THCS THPT Ngô Thời NhiệmĐề Thi HK2 Toán 9 - TH THCS THPT Ngô Thời Nhiệm
Đề Thi HK2 Toán 9 - TH THCS THPT Ngô Thời Nhiệm
 
[Pascal] sang tao2(v5.10)
[Pascal] sang tao2(v5.10)[Pascal] sang tao2(v5.10)
[Pascal] sang tao2(v5.10)
 
Tích Ngoài Của Véc Tơ Và Ứng Dụng.docx
Tích Ngoài Của Véc Tơ Và Ứng Dụng.docxTích Ngoài Của Véc Tơ Và Ứng Dụng.docx
Tích Ngoài Của Véc Tơ Và Ứng Dụng.docx
 
Bài giảng chuyên đề - Lê Minh Hoàng
Bài giảng chuyên đề - Lê Minh HoàngBài giảng chuyên đề - Lê Minh Hoàng
Bài giảng chuyên đề - Lê Minh Hoàng
 
De cuong toan 2 chan troi sang tao
De cuong toan 2 chan troi sang taoDe cuong toan 2 chan troi sang tao
De cuong toan 2 chan troi sang tao
 
BÀI TẬP ÔN TẬP SỐ TỰ NHIÊN CÓ ĐÁP ÁN
BÀI TẬP ÔN TẬP SỐ TỰ NHIÊN CÓ ĐÁP ÁNBÀI TẬP ÔN TẬP SỐ TỰ NHIÊN CÓ ĐÁP ÁN
BÀI TẬP ÔN TẬP SỐ TỰ NHIÊN CÓ ĐÁP ÁN
 
Bài tập nhập môn lập trình
Bài tập nhập môn lập trìnhBài tập nhập môn lập trình
Bài tập nhập môn lập trình
 
Bai tap pascal co giai
Bai tap pascal co giaiBai tap pascal co giai
Bai tap pascal co giai
 
[Pascal] sang tao1[v5.10]
[Pascal] sang tao1[v5.10][Pascal] sang tao1[v5.10]
[Pascal] sang tao1[v5.10]
 
Tin11
Tin11Tin11
Tin11
 

Mais de Tường Tường (15)

Một Số Phương Pháp Hỗ Trợ dạy Học
Một Số Phương Pháp Hỗ Trợ dạy HọcMột Số Phương Pháp Hỗ Trợ dạy Học
Một Số Phương Pháp Hỗ Trợ dạy Học
 
Bài tập pascal
Bài tập pascalBài tập pascal
Bài tập pascal
 
Gthieu
GthieuGthieu
Gthieu
 
Bài 12: Kiểu Xâu (Tiết 3)
Bài 12: Kiểu Xâu (Tiết 3)Bài 12: Kiểu Xâu (Tiết 3)
Bài 12: Kiểu Xâu (Tiết 3)
 
Bai12 kieuxau3
Bai12 kieuxau3Bai12 kieuxau3
Bai12 kieuxau3
 
Bai12 kieuxau 2
Bai12 kieuxau 2Bai12 kieuxau 2
Bai12 kieuxau 2
 
Bai12 kieuxau3
Bai12 kieuxau3Bai12 kieuxau3
Bai12 kieuxau3
 
Bai12 kieuxau 2
Bai12 kieuxau 2Bai12 kieuxau 2
Bai12 kieuxau 2
 
Bai12 kieuxaut1
Bai12 kieuxaut1Bai12 kieuxaut1
Bai12 kieuxaut1
 
Kieumang
KieumangKieumang
Kieumang
 
Ho sotrinhchieu intel
Ho sotrinhchieu intelHo sotrinhchieu intel
Ho sotrinhchieu intel
 
Ho sotrinhchieu intel (1)
Ho sotrinhchieu intel (1)Ho sotrinhchieu intel (1)
Ho sotrinhchieu intel (1)
 
Ho sotrinhchieu intel
Ho sotrinhchieu intelHo sotrinhchieu intel
Ho sotrinhchieu intel
 
Ho sotrinhchieu intel (1)
Ho sotrinhchieu intel (1)Ho sotrinhchieu intel (1)
Ho sotrinhchieu intel (1)
 
Kịch bản dạy học bài 16 tin học lớp 10
Kịch bản dạy học bài 16 tin học lớp 10Kịch bản dạy học bài 16 tin học lớp 10
Kịch bản dạy học bài 16 tin học lớp 10
 

Último

vat li 10 Chuyen de bai 4 Xac dinh phuong huong.pptx
vat li 10  Chuyen de bai 4 Xac dinh phuong huong.pptxvat li 10  Chuyen de bai 4 Xac dinh phuong huong.pptx
vat li 10 Chuyen de bai 4 Xac dinh phuong huong.pptxlephuongvu2019
 
Lập lá số tử vi trọn đời có luận giải chi tiết, chính xác n...
Lập lá số tử vi trọn đời có luận giải chi tiết, chính xác n...Lập lá số tử vi trọn đời có luận giải chi tiết, chính xác n...
Lập lá số tử vi trọn đời có luận giải chi tiết, chính xác n...Xem Số Mệnh
 
Slide Webinar Hướng dẫn sử dụng ChatGPT cho người mới bắt đầ...
Slide Webinar Hướng dẫn sử dụng ChatGPT cho người mới bắt đầ...Slide Webinar Hướng dẫn sử dụng ChatGPT cho người mới bắt đầ...
Slide Webinar Hướng dẫn sử dụng ChatGPT cho người mới bắt đầ...Học viện Kstudy
 
ĐỀ THAM KHẢO THEO HƯỚNG MINH HỌA 2025 KIỂM TRA GIỮA HỌC KÌ + CUỐI HỌC KÌ 2 NĂ...
ĐỀ THAM KHẢO THEO HƯỚNG MINH HỌA 2025 KIỂM TRA GIỮA HỌC KÌ + CUỐI HỌC KÌ 2 NĂ...ĐỀ THAM KHẢO THEO HƯỚNG MINH HỌA 2025 KIỂM TRA GIỮA HỌC KÌ + CUỐI HỌC KÌ 2 NĂ...
ĐỀ THAM KHẢO THEO HƯỚNG MINH HỌA 2025 KIỂM TRA GIỮA HỌC KÌ + CUỐI HỌC KÌ 2 NĂ...Nguyen Thanh Tu Collection
 
Bài giảng về vật liệu ceramic ( sứ vệ sinh, gạch ốp lát )
Bài giảng về vật liệu ceramic ( sứ vệ sinh, gạch ốp lát )Bài giảng về vật liệu ceramic ( sứ vệ sinh, gạch ốp lát )
Bài giảng về vật liệu ceramic ( sứ vệ sinh, gạch ốp lát )lamdapoet123
 
50 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
50 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...50 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
50 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
50 ĐỀ ĐỀ XUẤT THI VÀO 10 THPT SỞ GIÁO DỤC THANH HÓA MÔN TIẾNG ANH 9 CÓ TỰ LUẬ...
50 ĐỀ ĐỀ XUẤT THI VÀO 10 THPT SỞ GIÁO DỤC THANH HÓA MÔN TIẾNG ANH 9 CÓ TỰ LUẬ...50 ĐỀ ĐỀ XUẤT THI VÀO 10 THPT SỞ GIÁO DỤC THANH HÓA MÔN TIẾNG ANH 9 CÓ TỰ LUẬ...
50 ĐỀ ĐỀ XUẤT THI VÀO 10 THPT SỞ GIÁO DỤC THANH HÓA MÔN TIẾNG ANH 9 CÓ TỰ LUẬ...Nguyen Thanh Tu Collection
 
Linh kiện điện tử - Điện tử số sáng tạo VN.pdf
Linh kiện điện tử - Điện tử số sáng tạo VN.pdfLinh kiện điện tử - Điện tử số sáng tạo VN.pdf
Linh kiện điện tử - Điện tử số sáng tạo VN.pdfXem Số Mệnh
 
CHƯƠNG VII LUẬT DÂN SỰ (2) Pháp luật đại cương.pptx
CHƯƠNG VII LUẬT DÂN SỰ (2) Pháp luật đại cương.pptxCHƯƠNG VII LUẬT DÂN SỰ (2) Pháp luật đại cương.pptx
CHƯƠNG VII LUẬT DÂN SỰ (2) Pháp luật đại cương.pptx22146042
 
Game-Plants-vs-Zombies để ôn tập môn kinh tế chính trị.pptx
Game-Plants-vs-Zombies để ôn tập môn kinh tế chính trị.pptxGame-Plants-vs-Zombies để ôn tập môn kinh tế chính trị.pptx
Game-Plants-vs-Zombies để ôn tập môn kinh tế chính trị.pptxxaxanhuxaxoi
 
Luận giải tử vi của 12 con giáp năm 2024 chi tiết và chính xác -...
Luận giải tử vi của 12 con giáp năm 2024 chi tiết và chính xác -...Luận giải tử vi của 12 con giáp năm 2024 chi tiết và chính xác -...
Luận giải tử vi của 12 con giáp năm 2024 chi tiết và chính xác -...Xem Số Mệnh
 
BỘ ĐỀ KIỂM TRA CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO CẤU TRÚC ĐỀ MIN...
BỘ ĐỀ KIỂM TRA CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO CẤU TRÚC ĐỀ MIN...BỘ ĐỀ KIỂM TRA CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO CẤU TRÚC ĐỀ MIN...
BỘ ĐỀ KIỂM TRA CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO CẤU TRÚC ĐỀ MIN...Nguyen Thanh Tu Collection
 
VẬN DỤNG KIẾN THỨC LIÊN MÔN TRONG GIẢI BÀI TẬP ÔN THI THPTQG MÔN SINH HỌC - H...
VẬN DỤNG KIẾN THỨC LIÊN MÔN TRONG GIẢI BÀI TẬP ÔN THI THPTQG MÔN SINH HỌC - H...VẬN DỤNG KIẾN THỨC LIÊN MÔN TRONG GIẢI BÀI TẬP ÔN THI THPTQG MÔN SINH HỌC - H...
VẬN DỤNG KIẾN THỨC LIÊN MÔN TRONG GIẢI BÀI TẬP ÔN THI THPTQG MÔN SINH HỌC - H...Nguyen Thanh Tu Collection
 
Mạch điện tử - Điện tử số sáng tạo VN-new.pdf
Mạch điện tử - Điện tử số sáng tạo VN-new.pdfMạch điện tử - Điện tử số sáng tạo VN-new.pdf
Mạch điện tử - Điện tử số sáng tạo VN-new.pdfXem Số Mệnh
 
Xem sim phong thủy luận Hung - Cát số điện thoại chính xác nhất.pdf
Xem sim phong thủy luận Hung - Cát số điện thoại chính xác nhất.pdfXem sim phong thủy luận Hung - Cát số điện thoại chính xác nhất.pdf
Xem sim phong thủy luận Hung - Cát số điện thoại chính xác nhất.pdfXem Số Mệnh
 
Thiết kế hệ thống điều khiển chỉnh lưu tích cực 1 pha
Thiết kế hệ thống điều khiển chỉnh lưu tích cực 1 phaThiết kế hệ thống điều khiển chỉnh lưu tích cực 1 pha
Thiết kế hệ thống điều khiển chỉnh lưu tích cực 1 phaAnhDngBi4
 
2第二课:汉语不太难.pptx. Chinese lesson 2: Chinese not that hard
2第二课:汉语不太难.pptx. Chinese lesson 2: Chinese not that hard2第二课:汉语不太难.pptx. Chinese lesson 2: Chinese not that hard
2第二课:汉语不太难.pptx. Chinese lesson 2: Chinese not that hardBookoTime
 
10 ĐỀ KIỂM TRA + 6 ĐỀ ÔN TẬP CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO C...
10 ĐỀ KIỂM TRA + 6 ĐỀ ÔN TẬP CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO C...10 ĐỀ KIỂM TRA + 6 ĐỀ ÔN TẬP CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO C...
10 ĐỀ KIỂM TRA + 6 ĐỀ ÔN TẬP CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO C...Nguyen Thanh Tu Collection
 
syllabus for the book "Tiếng Anh 6 i-Learn Smart World"
syllabus for the book "Tiếng Anh 6 i-Learn Smart World"syllabus for the book "Tiếng Anh 6 i-Learn Smart World"
syllabus for the book "Tiếng Anh 6 i-Learn Smart World"LaiHoang6
 
cuộc cải cách của Lê Thánh Tông - Sử 11
cuộc cải cách của Lê Thánh Tông -  Sử 11cuộc cải cách của Lê Thánh Tông -  Sử 11
cuộc cải cách của Lê Thánh Tông - Sử 11zedgaming208
 

Último (20)

vat li 10 Chuyen de bai 4 Xac dinh phuong huong.pptx
vat li 10  Chuyen de bai 4 Xac dinh phuong huong.pptxvat li 10  Chuyen de bai 4 Xac dinh phuong huong.pptx
vat li 10 Chuyen de bai 4 Xac dinh phuong huong.pptx
 
Lập lá số tử vi trọn đời có luận giải chi tiết, chính xác n...
Lập lá số tử vi trọn đời có luận giải chi tiết, chính xác n...Lập lá số tử vi trọn đời có luận giải chi tiết, chính xác n...
Lập lá số tử vi trọn đời có luận giải chi tiết, chính xác n...
 
Slide Webinar Hướng dẫn sử dụng ChatGPT cho người mới bắt đầ...
Slide Webinar Hướng dẫn sử dụng ChatGPT cho người mới bắt đầ...Slide Webinar Hướng dẫn sử dụng ChatGPT cho người mới bắt đầ...
Slide Webinar Hướng dẫn sử dụng ChatGPT cho người mới bắt đầ...
 
ĐỀ THAM KHẢO THEO HƯỚNG MINH HỌA 2025 KIỂM TRA GIỮA HỌC KÌ + CUỐI HỌC KÌ 2 NĂ...
ĐỀ THAM KHẢO THEO HƯỚNG MINH HỌA 2025 KIỂM TRA GIỮA HỌC KÌ + CUỐI HỌC KÌ 2 NĂ...ĐỀ THAM KHẢO THEO HƯỚNG MINH HỌA 2025 KIỂM TRA GIỮA HỌC KÌ + CUỐI HỌC KÌ 2 NĂ...
ĐỀ THAM KHẢO THEO HƯỚNG MINH HỌA 2025 KIỂM TRA GIỮA HỌC KÌ + CUỐI HỌC KÌ 2 NĂ...
 
Bài giảng về vật liệu ceramic ( sứ vệ sinh, gạch ốp lát )
Bài giảng về vật liệu ceramic ( sứ vệ sinh, gạch ốp lát )Bài giảng về vật liệu ceramic ( sứ vệ sinh, gạch ốp lát )
Bài giảng về vật liệu ceramic ( sứ vệ sinh, gạch ốp lát )
 
50 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
50 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...50 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
50 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
50 ĐỀ ĐỀ XUẤT THI VÀO 10 THPT SỞ GIÁO DỤC THANH HÓA MÔN TIẾNG ANH 9 CÓ TỰ LUẬ...
50 ĐỀ ĐỀ XUẤT THI VÀO 10 THPT SỞ GIÁO DỤC THANH HÓA MÔN TIẾNG ANH 9 CÓ TỰ LUẬ...50 ĐỀ ĐỀ XUẤT THI VÀO 10 THPT SỞ GIÁO DỤC THANH HÓA MÔN TIẾNG ANH 9 CÓ TỰ LUẬ...
50 ĐỀ ĐỀ XUẤT THI VÀO 10 THPT SỞ GIÁO DỤC THANH HÓA MÔN TIẾNG ANH 9 CÓ TỰ LUẬ...
 
Linh kiện điện tử - Điện tử số sáng tạo VN.pdf
Linh kiện điện tử - Điện tử số sáng tạo VN.pdfLinh kiện điện tử - Điện tử số sáng tạo VN.pdf
Linh kiện điện tử - Điện tử số sáng tạo VN.pdf
 
CHƯƠNG VII LUẬT DÂN SỰ (2) Pháp luật đại cương.pptx
CHƯƠNG VII LUẬT DÂN SỰ (2) Pháp luật đại cương.pptxCHƯƠNG VII LUẬT DÂN SỰ (2) Pháp luật đại cương.pptx
CHƯƠNG VII LUẬT DÂN SỰ (2) Pháp luật đại cương.pptx
 
Game-Plants-vs-Zombies để ôn tập môn kinh tế chính trị.pptx
Game-Plants-vs-Zombies để ôn tập môn kinh tế chính trị.pptxGame-Plants-vs-Zombies để ôn tập môn kinh tế chính trị.pptx
Game-Plants-vs-Zombies để ôn tập môn kinh tế chính trị.pptx
 
Luận giải tử vi của 12 con giáp năm 2024 chi tiết và chính xác -...
Luận giải tử vi của 12 con giáp năm 2024 chi tiết và chính xác -...Luận giải tử vi của 12 con giáp năm 2024 chi tiết và chính xác -...
Luận giải tử vi của 12 con giáp năm 2024 chi tiết và chính xác -...
 
BỘ ĐỀ KIỂM TRA CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO CẤU TRÚC ĐỀ MIN...
BỘ ĐỀ KIỂM TRA CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO CẤU TRÚC ĐỀ MIN...BỘ ĐỀ KIỂM TRA CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO CẤU TRÚC ĐỀ MIN...
BỘ ĐỀ KIỂM TRA CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO CẤU TRÚC ĐỀ MIN...
 
VẬN DỤNG KIẾN THỨC LIÊN MÔN TRONG GIẢI BÀI TẬP ÔN THI THPTQG MÔN SINH HỌC - H...
VẬN DỤNG KIẾN THỨC LIÊN MÔN TRONG GIẢI BÀI TẬP ÔN THI THPTQG MÔN SINH HỌC - H...VẬN DỤNG KIẾN THỨC LIÊN MÔN TRONG GIẢI BÀI TẬP ÔN THI THPTQG MÔN SINH HỌC - H...
VẬN DỤNG KIẾN THỨC LIÊN MÔN TRONG GIẢI BÀI TẬP ÔN THI THPTQG MÔN SINH HỌC - H...
 
Mạch điện tử - Điện tử số sáng tạo VN-new.pdf
Mạch điện tử - Điện tử số sáng tạo VN-new.pdfMạch điện tử - Điện tử số sáng tạo VN-new.pdf
Mạch điện tử - Điện tử số sáng tạo VN-new.pdf
 
Xem sim phong thủy luận Hung - Cát số điện thoại chính xác nhất.pdf
Xem sim phong thủy luận Hung - Cát số điện thoại chính xác nhất.pdfXem sim phong thủy luận Hung - Cát số điện thoại chính xác nhất.pdf
Xem sim phong thủy luận Hung - Cát số điện thoại chính xác nhất.pdf
 
Thiết kế hệ thống điều khiển chỉnh lưu tích cực 1 pha
Thiết kế hệ thống điều khiển chỉnh lưu tích cực 1 phaThiết kế hệ thống điều khiển chỉnh lưu tích cực 1 pha
Thiết kế hệ thống điều khiển chỉnh lưu tích cực 1 pha
 
2第二课:汉语不太难.pptx. Chinese lesson 2: Chinese not that hard
2第二课:汉语不太难.pptx. Chinese lesson 2: Chinese not that hard2第二课:汉语不太难.pptx. Chinese lesson 2: Chinese not that hard
2第二课:汉语不太难.pptx. Chinese lesson 2: Chinese not that hard
 
10 ĐỀ KIỂM TRA + 6 ĐỀ ÔN TẬP CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO C...
10 ĐỀ KIỂM TRA + 6 ĐỀ ÔN TẬP CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO C...10 ĐỀ KIỂM TRA + 6 ĐỀ ÔN TẬP CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO C...
10 ĐỀ KIỂM TRA + 6 ĐỀ ÔN TẬP CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO C...
 
syllabus for the book "Tiếng Anh 6 i-Learn Smart World"
syllabus for the book "Tiếng Anh 6 i-Learn Smart World"syllabus for the book "Tiếng Anh 6 i-Learn Smart World"
syllabus for the book "Tiếng Anh 6 i-Learn Smart World"
 
cuộc cải cách của Lê Thánh Tông - Sử 11
cuộc cải cách của Lê Thánh Tông -  Sử 11cuộc cải cách của Lê Thánh Tông -  Sử 11
cuộc cải cách của Lê Thánh Tông - Sử 11
 

Bài tập xâu cơ bản-nâng cao

  • 1. 1 BÀI TẬP XÂU CƠ BẢN-NÂNG CAO THÀNH PHỐ HỒ CHÍ MINH - 2018 GV: Phạm Thị Bích Tường Email: bichtuong2312@gmail.com KIỂU DỮ LIỆU CÓ CẤU TRÚC TRONG PASCAL
  • 2. 2 MỤC LỤC BÀI TẬP CƠ BẢN....................................................................................................................3 Bài tập 1: Nhập xâu kí tự bất kì .........................................................................................3 a) Đếm số lần xuất hiện của 1 kí tự nào đó trong câu. ...............................................3 b) Liệt kê các kí tự có mặt trong xâu cùng số lần xuất hiện của các kí tự đó.......3 Bài 2: Nhập 1 xâu kí tự........................................................................................................3 a) Xét xem trong xâu có K kí tự kề nhau mà như nhau hay không? ....................3 b) Hãy xóa đi kí tự kề nhau mà như nhau, chỉ giữ lại một.....................................3 Bài 3: Nhập 1 xâu kí tự. Kiểm tra tính đối xứng của xâu đó. Nếu xâu không đối xứng thì đảo xâu...............................................................................................................4 Bài 4: Cho 1 xâu kí tự. Tính xem trong số đó có bao nhiêu loại kí tự khác nhau ( không phân biệt in hoa hay in thường)..........................................................................5 Bài 5: Cho 1 xâu kí tự bất kì, tính: Số lượng các kí tự số, Số lượng các kí tự chữ cái. ............................................................................................................................................6 Bài 6: Cho 1 xâu kí tự bất kì (cả số lẫn chữ). Viết chương trình tách các phần là số của xâu trên và đưa ra 1 mảng số nguyên. ....................................................................7 Bài 7: Nhập vào 1 xâu. Biến đổi thành chữ in hoa........................................................8 Bài 8: Nhập vào 1 xâu. Biến đổi in thường....................................................................9 Bài 9: Nhập vào 1 chuỗi, in ra chuỗi ngược...................................................................9 Bài 10: Nhập vào danh sách HS 1 lớp. Sắp xếp lại danh sắp theo thứ tự tăng dần theo chiều dài của tên. ..................................................................................................10 Bài 11: Nhập vào họ tên bất kì sau đó biến đổi các chữ cái đầu tiên là in hoa.........10 Bài 12: Nhập vào 1 đoạn văn. Tính số câu...................................................................11 Bài 13: Nhập vào 1 số, xóa bỏ các chữ số lẻ. Xuất kết quả dưới dạng đối xứng của phần còn lại. Vd:1 2 4 5 6 --> 2 4 6 6 4 2 ......................................................................11 Bài 14: Nhập vào 1 số, xóa bỏ các chữ số chẵn. Kiểm tra số còn lại có bao nhiêu chữ số. Xuất kết quả dưới dạng đối xứng của phần còn lại. .............................................12 Bài 15: Nhập chuỗi gồm cả chữ và số. Xuất ra màn hình các số riêng và các chữ riêng. Hãy đếm số lần xuất hiện của mỗi chữ, mỗi số.................................................12 Bài 16: Nhập 1 xâu kí tự và bỏ đi tất cả các khoảng trống bên trái của nó..............13 Bài 17: Dùng hàm “copy”. Tách từ đầu tiên ra khỏi 1 xâu kí tự cho trước. ............14 Bài 18: Vị Giám đốc công ty XYZ cần gửi một văn bản quan trọng tới một đối tác của mình. Để bảo mật văn bản, ông quyết định mã hóa văn bản trước khi gửi. Văn bản là một xâu S các chữ cái la tinh in thường. Ông ta chia văn bản thành hai đoạn liên tiếp Sb và Se. Lần lượt viết hai xâu Sb và Se nhưng đều theo thứ tự ngược lại ông ta nhận được xâu mã hóa Q. Bức thư thứ nhất gửi cho đối tác có nội dung là Q. Để đối tác đọc được văn bản, ông ta gửi thêm một bức thư thứ hai trong đó chứa khóa để giải mã: độ dài k của xâu Sb...........................................................................14 Bài 19: Trong giờ học Lập trình về xử lý chuỗi. Thầy giáo có cho một bài tập như sau: Thầy sẽ đọc họ và tên của một bạn sinh viên bất kỳ trong lớp. Công việc của chúng ta là hãy viết một chương trình để tách Họ, Tên Lót (tên đệm), và Tên của bạn đó ra.........................................................................................................................15 Bài tập 20: Viết chương trình thực hiện phép cộng 2 số tự nhiên lớn (không quá 255 chữ số). .....................................................................................................................16 BÀI TẬP NÂNG CAO...........................................................................................................17 Đề bài số 1.......................................................................................................................17 Đề bài 2............................................................................................................................19
  • 3. 3 BÀI TẬP CƠ BẢN Bài tập 1: Nhập xâu kí tự bất kì a) Đếm số lần xuất hiện của 1 kí tự nào đó trong câu. b) Liệt kê các kí tự có mặt trong xâu cùng số lần xuất hiện của các kí tự đó. Bài giải: uses crt; var str:string[100]; chu:array[#1..#254] of integer; i:integer; ch:char; begin clrscr; for ch:=#1 to #254 do chu[ch]:=0; write(' Nhap chuoi = ');readln(str); for i:=1 to length(str) do (chu[upcase(str[i])]):=chu[upcase(str[i])] +1; writeLn('Cac ki tu trong xau la:'); for ch:=#1 to #254 do if chu[ch]>0 then writeln(ch, ': xuat hien ',chu[ch],' lan'); readln; end. Bài 2: Nhập 1 xâu kí tự. a) Xét xem trong xâu có K kí tự kề nhau mà như nhau hay không? b) Hãy xóa đi kí tự kề nhau mà như nhau, chỉ giữ lại một. Bài giải: uses crt; var ch:string[100]; i,k,d,d1,n:integer; (*****) function xoa:boolean; var i:integer; begin
  • 4. 4 xoa:=false; for i:=1 to length(ch)-1 do if ch[i]=ch[i+1] then begin delete(ch,i,1); xoa:=true; exit end; end; (*****) begin clrscr; write('Nhap chuoi :');readln(ch); write('Nhap ki tu K:');readln(k); n:=length(ch); d:=0;d1:=0; for i:=1 to n-1 do begin if ch[i]=ch[i+1] then inc(d1) else d1:=0; if d1+1>=k then inc(d); end; if d>0 then writeln('Co ',k,' ki tu nhu nhau') else writeln('Khong co ',k,' ki tu nhu nhau'); while xoa do; write('In lai xau sau khi xoa:'); writeln(ch); readln; end. Bài 3: Nhập 1 xâu kí tự. Kiểm tra tính đối xứng của xâu đó. Nếu xâu không đối xứng thì đảo xâu. Bài giải: uses crt; var str,s:string[100]; n,i:integer; (*****) procedure sx(var a,b:char); var tam:char;
  • 5. 5 begin tam:=a; a:=b; b:=tam; end; procedure dao(n,i:integer); var j:integer; begin for j:=i+1 to n do if str[i]=str[j] then begin sx(str[j],str[n-i+1]); exit end; end; (*****) begin clrscr; write('Nhap xau:');readln(str); n:=length(str); s:=''; for i:=n downto 1 do s:=s+str[i]; if str=s then writeln('Chuoi doi xung:') else begin writeln('Chuoi ko doi xung, chuoi da dao doi xung:'); for i:=1 to n-1 do dao(n,i); end; writeln(str); readln; end. Bài 4: Cho 1 xâu kí tự. Tính xem trong số đó có bao nhiêu loại kí tự khác nhau ( không phân biệt in hoa hay in thường). Bài giải: uses crt; var s:string; i,j,dem:integer; t:boolean;
  • 6. 6 begin clrscr; write('Nhap xau:');readln(s); dem:=0; for i:=1 to length(s) do begin t:=false; for j:=1 to i-1 do if((s[j])=(s[i])) then t:=true; if not(t) then inc(dem); end; write('Co ',dem,' ki tu khac nhau.'); readln; end. Bài 5: Cho 1 xâu kí tự bất kì, tính: Số lượng các kí tự số, Số lượng các kí tự chữ cái. Bài giải: uses crt; const so: set of char=['0','1','2','3','4','5','6','7','8','9']; var st,b:string; a:array[1..100] of integer; i,j,l,n,dem,dem1,c:integer; (*****) procedure sx(var x,y:integer); var tam:integer; begin tam:=x; x:=y; y:=tam; end; (*****) begin clrscr; write('nhap xau:');readln(st); dem:=0; dem1:=0; for i:=1 to length(st) do begin if (st[i] in['0'..'9']) then inc(dem);
  • 7. 7 if (upcase(st[i]) in['A'..'Z']) then inc(dem1); end; write('Co ',dem1,' chu cai.'); writeln; writeln('Co ',dem,' chu so.'); l:=length(st); i:=1; n:=0; repeat if (st[i] in so) then begin b:=''; repeat b:=b+st[i]; inc(i); until (not(st[i] in so)) or (i>l); inc(n); val(b,a[n],c); end; inc(i); until i>l; for i:=1 to n do write(a[i]:5); writeln; writeln('Sx tang:'); for i:=1 to n-1 do for j:=i to n do if a[j]<a[i] then sx(a[j],a[i]); for i:=1 to n do write(a[i]:5); readln; end. Bài 6: Cho 1 xâu kí tự bất kì (cả số lẫn chữ). Viết chương trình tách các phần là số của xâu trên và đưa ra 1 mảng số nguyên. Bài giải: uses crt; const so: set of char=['0','1','2','3','4','5','6','7','8','9']; var a:array[1..100] of integer; st,b:string; c,l,i,n,j:integer; (*****) procedure sx(var x,y:integer); var tam:integer;
  • 8. 8 begin tam:=x; x:=y; y:=tam; end; (*****) begin clrscr; write('Nhap xau:');readln(st); l:=length(st); i:=1; n:=0; repeat if (st[i] in so) then begin b:=''; repeat b:=b+st[i]; inc(i); until (not(st[i] in so)) or (i>l); inc(n); val(b,a[n],c); end; inc(i); until i>l; for i:=1 to n do write(a[i]:5); writeln; write('Sx tang:'); writeln; for i:=1 to n-1 do for j:=i to n do if a[j]<a[i] then sx(a[j],a[i]); for i:=1 to n do write(a[i]:5); readln; end. Bài 7: Nhập vào 1 xâu. Biến đổi thành chữ in hoa. Bài giải: uses crt; var s:string; i,k:integer;
  • 9. 9 begin clrscr; write('Nhap xau:');readln(s); write('Bien doi in hoa:'); for i:=1 to length(s) do write(upcase(s[i])); readln; end. Bài 8: Nhập vào 1 xâu. Biến đổi in thường. Bài giải: uses crt; var s:string; i:integer; begin clrscr; write('Nhap xau:');readln(s); for i:=1 to length(s) do if s[i] in ['A'..'Z'] then s[i]:=chr(ord(s[i])+32); write('Bien doi thuong:',s); readln; end. Bài 9: Nhập vào 1 chuỗi, in ra chuỗi ngược. Bài giải: uses crt; var s:string; i:integer; begin clrscr; write('nhap chuoi:');readln(s); write('Chuoi nguoc:'); for i:=length(s) downto 1 do write(s[i]); readln; end.
  • 10. 10 Bài 10: Nhập vào danh sách HS 1 lớp. Sắp xếp lại danh sắp theo thứ tự tăng dần theo chiều dài của tên. Bài giải: uses crt; var hs:string; i,j,n:integer; (******) procedure sx(var a,b:integer); var tam:integer; begin tam:=a; a:=b; b:=tam; end; (******) begin clrscr; write('Nhap so HS:');readln(n); for i:=1 to n do begin write('Ten HS thu ',i,' :');readln(hs[i]); end; for i:=1 to n-1 do for j:=i+1 to n do if length(hs[i]) > length(hs[j]) then sx(hs[i],hs[j]); writeln('Sx theo do dai ten:'); for i:=1 to n do writeln(hs[i]); readln; end. Bài 11: Nhập vào họ tên bất kì sau đó biến đổi các chữ cái đầu tiên là in hoa. Bài giải: uses crt; const chu=['a'..'z']; var hoten:string; i,k:integer; begin
  • 11. 11 clrscr; write('Nhap ho ten:');readln(hoten); k:=length(hoten); if hoten[1] in chu then hoten[1]:=upcase(hoten[1]); for i:=2 to k do if (hoten[i-1]=#32) and (hoten[i] in chu) then hoten[i]:=upcase(hoten[i]); write('sau khi bien doi:',hoten); readln; end. Bài 12: Nhập vào 1 đoạn văn. Tính số câu. Bài giải: uses crt; var s:string; i,d:integer; begin clrscr; write('Nhap 1 doan:');readln(s); for i:=1 to length(s) do if s[i]='.' then inc(d); write('Doan tren co ',d,' cau.'); readln; end. Bài 13: Nhập vào 1 số, xóa bỏ các chữ số lẻ. Xuất kết quả dưới dạng đối xứng của phần còn lại. Vd:1 2 4 5 6 --> 2 4 6 6 4 2 Bài giải: uses crt; const so=['1','3','5','7','9']; var s:string; i:integer; begin clrscr; write('Nhap 1 day so:');readln(s); i:=1; while i<=length(s) do if s[i] in so then begin
  • 12. 12 delete(s,i,1); i:=1; end else inc(i); write('Sau khi xoa cac so le va bien doi doi xung:',s); for i:=length(s) downto 1 do write(s[i]); readln; end. Bài 14: Nhập vào 1 số, xóa bỏ các chữ số chẵn. Kiểm tra số còn lại có bao nhiêu chữ số. Xuất kết quả dưới dạng đối xứng của phần còn lại. Bài giải: uses crt; const so=['0','2','4','6','8']; var s:string; i,dem:integer; begin clrscr; dem:=0; write('Nhap 1 day so:');readln(s); i:=1; while i<= length(s) do if s[i] in so then begin delete(s,i,1); i:=1; end else inc(i); for i:=1 to length(s) do dem:=dem+1; writeln('Sau khi xoa cac so chan con ',dem,' so le .'); write('Sau khi xoa cac so chan va bien doi doi xung :',s,' '); for i:=length(s) downto 1 do write(s[i]); readln; end. Bài 15: Nhập chuỗi gồm cả chữ và số. Xuất ra màn hình các số riêng và các chữ riêng. Hãy đếm số lần xuất hiện của mỗi chữ, mỗi số. Bài giải: uses crt;
  • 13. 13 var s:string; dem:array[#1..#254] of integer; i:integer; chu:char; begin clrscr; write('Nhap chuoi gom chu va so:');readln(s); for chu:=#1 to #254 do dem[chu]:=0; writeln('Chu:'); for i:=1 to length(s) do if upcase(s[i]) in ['A'..'Z'] then begin write(s[i]); dem[upcase(s[i])]:=dem[upcase(s[i])] +1; end; writeln; writeln('So:'); for i:=1 to length(s) do if s[i] in ['0'..'9'] then begin write(s[i]); dem[s[i]]:=dem[s[i]] +1; end; writeln; for chu:=#1 to #254 do if dem[chu]<>0 then writeln(chu,' xuat hien ',dem[chu],' lan'); readln; end. Bài 16: Nhập 1 xâu kí tự và bỏ đi tất cả các khoảng trống bên trái của nó. Bài giải: uses crt; var s,t:string; i,p:integer; begin clrscr; write('Nhap chuoi:');readln(s); writeln('khoang trong ben trai cua chuoi da bo, chuoi:'); while s[1]=#32 do delete(s,1,1); write(s);
  • 14. 14 readln; end. Bài 17: Dùng hàm “copy”. Tách từ đầu tiên ra khỏi 1 xâu kí tự cho trước. Bài giải: uses crt; var s:string; i:integer; begin clrscr; write('Nhap chuoi:');readln(s); writeln('Tach tu dau tien ra khoai xau:'); write(copy(s,1,1)); readln; end. Bài 18: Vị Giám đốc công ty XYZ cần gửi một văn bản quan trọng tới một đối tác của mình. Để bảo mật văn bản, ông quyết định mã hóa văn bản trước khi gửi. Văn bản là một xâu S các chữ cái la tinh in thường. Ông ta chia văn bản thành hai đoạn liên tiếp Sb và Se. Lần lượt viết hai xâu Sb và Se nhưng đều theo thứ tự ngược lại ông ta nhận được xâu mã hóa Q. Bức thư thứ nhất gửi cho đối tác có nội dung là Q. Để đối tác đọc được văn bản, ông ta gửi thêm một bức thư thứ hai trong đó chứa khóa để giải mã: độ dài k của xâu Sb. Ví dụ nội dung bức thư S = ’programming’ với với khóa k= 7 sẽ được chia thành 2 đoạn: Sb = ’program’, Se = ’ming’, nhận được xâu mã hóa Q = ’margorpgnim’. Yêu cầu: Cho xâu mã hóa Q và khóa k, hãy xác định xâu S (k≥ 0 và không vượt quá độ dài xâu S). Dữ liệu nhập: - Dòng thứ nhất chứa xâu mã hóa Q có độ dài từ 1 đến 250. - Dòng thứ hai chứa khóa k. Dữ liệu xuất: - Là xâu S tìm được. var k,n,i :longint; S,l:string; begin read(s); read(n); For i:=n downto 1 do
  • 15. 15 l:=l+s[i]; for i:=length(s) downto n+1 do l:=l+s[i]; WRITE(L); end. Bài 19: Trong giờ học Lập trình về xử lý chuỗi. Thầy giáo có cho một bài tập như sau: Thầy sẽ đọc họ và tên của một bạn sinh viên bất kỳ trong lớp. Công việc của chúng ta là hãy viết một chương trình để tách Họ, Tên Lót (tên đệm), và Tên của bạn đó ra Input: Một chuỗi duy nhất là họ tên của bạn sinh viên mà thầy đọc. Lưu ý: Họ tên có thể chỉ gồm họ và tên (không có tên lót), hoặc đầy đủ họ, lót, tên. Output: Dòng 1: Xuất ra họ Dòng 2: Xuất ra tên lót (nếu có). Dòng 3: Xuất ra tên. var ht,ten,ho,lot:string; i,n,d:longint; begin read(ht); lot:=''; ho:=''; ten:=ht; n:=length(ht); for i:=n downto 1 do if ten[i]=' ' then begin delete(ten,1,i); break; end; for i:=length(ht) downto n-length(ten) do begin if ht[i]<>' ' then delete(ht,i,1); if ht[i]=' ' then break; end; i:=1; while i<=length(ht) do begin
  • 16. 16 if ht[i]<>' ' then ho:=ho+ht[i]; if ht[i]=' ' then break; inc(i); end; for i:=length(ho)+1 to length(ht) do lot:=lot+ht[i]; writeln('Ho:', ho); if (lot <> ' ') then writeln('Lot:', lot); writeln('Ten:', ten); readln; end. Bài tập 20: Viết chương trình thực hiện phép cộng 2 số tự nhiên lớn (không quá 255 chữ số). Uses crt; Var so1,so2,kqua:string; Procedure LamDayXau(Var st1,st2:string); {Them so 0 vao truoc xau ngan} var i:Byte; Begin If Length(st1)>Length(st2) Then For i:=1 To Length(st1)-Length(st2) Do st2:='0'+st2 Else For i:=1 To Length(st2)-Length(st1) Do st1:='0'+st1; End; Function Cong(st1,st2:string):string; Var i,a,b,c,sodu:Byte; code:integer; st,ch:string; Begin st:=''; sodu:=0; LamDayXau(st1,st2); {Lấy từng số của 2 xâu: từ phải sang trái} For i:=Length(st1) DownTo 1 Do Begin {Đổi ký tự sang số nguyên} Val(st1[i],a,code); Val(st2[i],b,code); {Tính tổng của 2 số a,b vừa lấy ra cho vào biến c}
  • 17. 17 c:=(a+b+sodu) MOD 10; {Lấy phần dư của tổng a+b} sodu:=(a+b+sodu) DIV 10; {Đổi số nguyên c sang xâu ký tự ch} str(c,ch); {Cộng xâu ch vào bên trái xâu kết quả st} st:=ch+st; End; {Xử lý trường hợp số dư cuối cùng >0} If sodu>0 Then Begin str(sodu,ch); st:=ch+st; End; Cong:=st; End; Begin Write('Nhap so thu nhat: '); Readln(so1); Write('Nhap so thu hai: '); Readln(so2); kqua:=Cong(so1,so2); Writeln('Tong= ',kqua); Readln; End BÀI TẬP NÂNG CAO Đề bài số 1 Ngày nay, việc sử dụng bàn phím điện thoại di động để nhấn các số đã trở thành một việc rất quen thuộc với các bạn sinh viên. Ai cũng biết các phím số trên điện thoại cũng là các phím dùng để nhấn các chữ cái: 2: ABC, 3: DEF, 4: GHI, 5: JKL, 6: MNO, 7: PQRS, 8: TUV, 9: WXYZ Nam viết ra giấy một dãy ký tự và đố Bình xác định đó là dãy số nào theo cách nhấn số trên điện thoại (chỉ xem xét sự tương ứng giữa số và ký tự chứ không xem xét phải nhấn bao nhiêu lần phím đó, ví dụ cả A, B, C đều là một số 2). Bình rất nhanh chóng xác định được kết quả, không những thế Bình còn muốn xác định nhanh xem số đó có phải là số dạng thuận nghịch hay không. Một số là thuận nghịch nếu viết theo thứ tự ngược lại cũng là chính nó. Hãy viết chương trình giúp Bình thực hiện công việc trên.
  • 18. 18 Input Dòng đầu tiên chứa số n là số bộ test (không quá 1000). Mỗi bộ test viết trên một dòng một dãy ký tự gồm các chữ cái có thể là chữ hoa hoặc chữ thường, dài không quá 20 ký tự, không có khoảng trống. Output Với mỗi bộ test, in ra màn hình, trên một dòng, chữ “YES” nếu đó tương ứng là số thuận nghịch, chữ “NO” nếu ngược lại. Chương trình tham khảo const fi=''; type data=longint; var f:text; s:string; i,test,j:data; function tinh(c:char):char; begin c:=upcase(c); case c of 'A'..'C': exit('2'); 'D'..'F': exit('3'); 'G'..'I': exit('4'); 'J'..'L': exit('5'); 'M'..'O': exit('6'); 'P'..'S': exit('7'); 'T'..'V': exit('8'); 'W'..'Z': exit('9'); end; end; function check:boolean; var i:data; st,sk:string; begin st:=''; sk:=''; for i:=1 to length(s) do begin st:=tinh(s[i])+st; sk:=sk+tinh(s[i]); end; if st=sk then
  • 19. 19 writeln('YES') else writeln('NO'); end; begin assign(f,fi); reset(f); readln(f,test); for i:=1 to test do begin readln(f,s); check; end; end. Đề bài 2 Hệ điều hành XP cho phép điều khiển cùng lúc hai bàn phím. Hai anh em Tuấn và Nam vừa được thưởng một máy tính mới nên rất muốn thử tính năng này của XP. Tuấn và Nam, mỗi người dùng một bàn phím và đồng thời gõ vào một từ đang nghĩ trong đầu tương ứng là S1 và S2. Do gõ đồng thời và tốc độ gõ khác nhau nên kết quả là trên màn hình hiện ra một chuỗi ký tự S là kết hợp của các ký tự trong S1 và S2. Các ký tự này đan xen nhau theo một trình tự nào đó khiến Tuấn và Nam không còn nhận ra ký tự nào do mình đã gõ. Yêu cầu Hãy giúp Tuấn và Nam xác định những ký tự nào có thể là của mình theo nghĩa nếu tách những ký tự đó ra và ghép lại theo đúng thứ tự thì ta nhận được đúng từ mà Tuấn và Nam đã gõ. Dữ Liệu Dữ liệu vào gồm 3 dòng, trong đó: Dòng đầu tiên chứa từ S1 do Tuấn đã gõ. Dòng thứ hai chứa từ S2 do Nam đã gõ. Dòng cuối cùng chứa chuỗi S. S1 và S2 chỉ chứa các chữ cái latin (a, A, b, B.. ) và số lượng ký tự trong mỗi chuỗi không vượt quá 100. Kết Quả Kết quả ghi ra chỉ có một dòng duy nhất chứa chuỗi ký tự có chiều dài bằng chiều dài chuỗi S, trong đó ký tự thứ I sẽ bằng ký tự ′1′ nếu ký tự tương ứng S[I] do Tuấn gõ và bằng ′2′ nếu S[I] do Nam gõ.
  • 20. 20 Trong trường hợp có nhiều hơn một kết quả thì in ra dãy có thứ tự từ điển bé nhất. Ví Dụ Input: papa mama mpapamaa Output: 21112212 2. Hướng dẫn giải NKH spoj – Tách Từ – Xây dựng thủ tục đệ quy try(i,kt1,kt2) với ý nghĩa tìm kết quả kí tự thứ i của xâu S khi chọn kí tự s1[kt1] hoặc s2[kt2] để ghép vào vị trí đó Code tham khảo const fi=''; nmax=200; type data=longint; var f:text; s1,s2,s3:string; n,m:data; tr:array[0..nmax+1] of data; procedure docfile; var i,j:data; begin assign(f,fi); reset(f); readln(f,s1); n:=length(s1); readln(f,s2); m:=length(s2); readln(f,s3); close(f); end; procedure try(i,kt1,kt2:data); // sinh ki tu thu i var j:data; begin if i>m+n then begin for j:=1 to m+n do write(tr[j]); halt; end
  • 21. 21 else begin if s3[i]=s1[kt1] then begin tr[i]:=1; try(i+1,kt1+1,kt2); end; if s3[i]=s2[kt2] then begin tr[i]:=2; try(i+1,kt1,kt2+1); end; end; end; begin docfile; try(1,1,1); end. Đề bài 3: NKH spoj Hệ điều hành XP cho phép điều khiển cùng lúc hai bàn phím. Hai anh em Tuấn và Nam vừa được thưởng một máy tính mới nên rất muốn thử tính năng này của XP. Tuấn và Nam, mỗi người dùng một bàn phím và đồng thời gõ vào một từ đang nghĩ trong đầu tương ứng là S1 và S2. Do gõ đồng thời và tốc độ gõ khác nhau nên kết quả là trên màn hình hiện ra một chuỗi ký tự S là kết hợp của các ký tự trong S1 và S2. Các ký tự này đan xen nhau theo một trình tự nào đó khiến Tuấn và Nam không còn nhận ra ký tự nào do mình đã gõ. Yêu cầu Hãy giúp Tuấn và Nam xác định những ký tự nào có thể là của mình theo nghĩa nếu tách những ký tự đó ra và ghép lại theo đúng thứ tự thì ta nhận được đúng từ mà Tuấn và Nam đã gõ. Dữ Liệu Dữ liệu vào gồm 3 dòng, trong đó: Dòng đầu tiên chứa từ S1 do Tuấn đã gõ. Dòng thứ hai chứa từ S2 do Nam đã gõ. Dòng cuối cùng chứa chuỗi S. S1 và S2 chỉ chứa các chữ cái latin (a, A, b, B.. ) và số lượng ký tự trong mỗi chuỗi không vượt quá 100. Kết Quả
  • 22. 22 Kết quả ghi ra chỉ có một dòng duy nhất chứa chuỗi ký tự có chiều dài bằng chiều dài chuỗi S, trong đó ký tự thứ I sẽ bằng ký tự ′1′ nếu ký tự tương ứng S[I] do Tuấn gõ và bằng ′2′ nếu S[I] do Nam gõ. Trong trường hợp có nhiều hơn một kết quả thì in ra dãy có thứ tự từ điển bé nhất. Ví Dụ Input: papa mama mpapamaa Output: 21112212 2. Hướng dẫn giải NKH spoj – Tách Từ – Xây dựng thủ tục đệ quy try(i,kt1,kt2) với ý nghĩa tìm kết quả kí tự thứ i của xâu S khi chọn kí tự s1[kt1] hoặc s2[kt2] để ghép vào vị trí i đó. Code tham khảo const fi=''; nmax=200; type data=longint; var f:text; s1,s2,s3:string; n,m:data; tr:array[0..nmax+1] of data; procedure docfile; var i,j:data; begin assign(f,fi); reset(f); readln(f,s1); n:=length(s1); readln(f,s2); m:=length(s2); readln(f,s3); close(f); end; procedure try(i,kt1,kt2:data); // sinh ki tu thu i var j:data; begin if i>m+n then begin for j:=1 to m+n do
  • 23. 23 write(tr[j]); halt; end else begin if s3[i]=s1[kt1] then begin tr[i]:=1; try(i+1,kt1+1,kt2); end; if s3[i]=s2[kt2] then begin tr[i]:=2; try(i+1,kt1,kt2+1); end; end; end; begin docfile; try(1,1,1); end. Đề bài 4: P156SUME spoj Một chuỗi a được gọi là ước của chuỗi b nếu tồn tại một số nguyên dương x sao cho khi ta viết x lần chuỗi a thì sẽ thu được chuỗi b. Ví dụ chuỗi “abab” có 2 ước là “ab” và “abab”. Bạn được cho 2 cho 2 chuỗi s1 và s2, hãy đếm xem chúng có tất cả bao nhiêu ước chung? Input Dòng đầu tiên là 1 chuỗi s1, dòng thứ 2 là chuỗi s2. Cả 2 chuỗi đều gồm các chữ cái thường, độ dài 2 chuỗi không quá 105 . Output In ra một số nguyên là kết quả của bài toán. Example Test 1: Input: xyztxyzt xyzt Output: 1
  • 24. 24 Test 2: Input: aaa aa Output: 1 Hướng dẫn giải P156SUME spoj PTIT – Gọi n1, n2 là độ dài của 2 xâu s1, s2. – độ dài ước của xâu sẽ là [1..độ dài xâu], mà ở bài này ta cần xâu chung, như vậy ta chỉ cần xét các xâu có độ dài từ [1..min(n1,n2)]. và xâu có độ dài i có khả năng là ước của xâu khi n1 mod i=0 và n2 mod i = 0. – Xét mỗi độ dài xâu ước, hãy kiểm tra xem xâu có độ dài i có phải là ước hay không? và kiểm tra ước trên s1, s2 giống nhau không. – Đếm kết quả bài toán… const fi=''; nmax=100000; type data=longint; var f:text; n1,n2:data; s1,s2:ansistring; procedure docfile; begin assign(f,fi); reset(f); readln(f,s1); readln(f,s2); n1:=length(s1); n2:=length(s2); close(f); end; function min(a,b:data):data; begin if a<b then exit(a); exit(b); end; procedure xuli; var i,j:data; st1,st2,x1,x2:ansistring;
  • 25. 25 res:data; begin res:=0; for i:=1 to min(n1,n2) do if (n1 mod i = 0) and (n2 mod i=0) then begin st1:=copy(s1,1,i); st2:=copy(s2,1,i); if st1<>st2 then continue; x1:=''; for j:=1 to n1 div i do x1:=x1+st1; if x1<>s1 then continue; x2:=''; for j:=1 to n2 div i do x2:=x2+st2; if x2<>s2 then continue; inc(res); end; writeln(res); end; begin docfile; xuli; end. Đề bài 5: P156PROE spoj Cho trước dãy ký tự: ABCDEFGHIJKLMNOPQRSTUVWXYZ_. Phép dịch K trong dãy này được định nghĩa là đẩy một ký tự đi K vị trí. Ví dụ: phép dịch 1 là ‘A’→’B’, ‘B’→’C’, …, ‘Z’→’_’, ‘_’→’.’, và ‘.’→’A’. Phép dịch 3 là: ‘A’→’D’, ‘B’→’E’, …, ‘.’→’C’. Bài toán đặt ra là cho trước số nguyên K và một xâu ký tự, hãy ghi ra kết quả phép dịch K tương ứng của xâu đó sau khi đã đảo ngược thứ tự các chữ cái. Input Mỗi bộ test ghi trên một dòng số nguyên 1<=N<=27, tiếp theo là khoảng trống rồi đến xâu S (không quá 40 ký tự và chỉ bao gồm các chữ cái in hoa). Bộ test cuối cùng có một số 0. Output
  • 26. 26 Với mỗi bộ test, ghi ra kết quả phép dịch sau khi đã đảo ngược thứ tự các chữ cái. Example Input: 1 ABCD 3 YO_THERE. 1 .DOT 14 ROAD 9 SHIFTING_AND_ROTATING_IS_NOT_ENCRYPTING 2 STRING_TO_BE_CONVERTED 1 SNQZDRQDUDQ 0 Output: EDCB CHUHKWBR. UPEA ROAD PWRAYF_LWNHAXWH.RHPWRAJAX_HMWJHPWRAORQ. FGVTGXPQEAGDAQVAIPKTVU REVERSE_ROT const fi=''; D:array[1..28] of char = ('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q' ,'R','S','T','U','V','W','X','Y','Z','_','.'); type data=longint; var F:text; n:data; s:string; function func(c:char; k:data):char; var vt:data; begin if c='_' then vt:=27 else if c='.' then vt:=28 else vt:=ord(c)-64; if vt+k>28 then
  • 27. 27 exit(d[vt+k-28]); exit(d[vt+k]); end; procedure xuli; var i,j:data; begin for i:=length(s) downto 1 do write(func(s[i],n)); writeln; end; procedure docfile; var i,j:data; z:char; begin assign(f,fi); reset(f); repeat read(f,n); if n=0 then break; read(f,z); readln(f,s); xuli; until FALSE; close(f); end; begin docfile; end. Đề bài 6: P151SUMI spoj Tèo đi học và bỏ lỡ không xem được trận tranh huy chương đồng của seagame giữa Việt Nam và Indonesia. Cậu tiếc ngẩn, tiếc ngơ, cũng may thay bạn cậu là Tí xem được trận này và mỗi khi có bàn thằng cậu lại ghi tên đội ghi bàn vào một tờ giấy, với tờ giấy Tèo đã biết được đội thắng. Giờ đây Tỉ giả sử với những tờ giấy bất kì như vậy, cậu cần biết ngay đội thắng mà không cần nhọc công xem lại từ đầu đến cuối, các bọn giúp tí giảm bớt công sức nhé. Input Dòng đầu tiên là số nguyên n(1 <= n <= 100) là số bàn thằng của trận đấu.
  • 28. 28 n dòng tiếp theo, mỗi dòng là tên đội bóng ghi bàn.(Tên đội viết hoa, không quá 10 kí tự) Đầu vào đảm bảo chứa không quá 2 đội và trận đấu không kết thúc với tỉ số hòa. Output Tên đội thằng Example Input: 5 Vietnam Vietnam Vietnam Vietnam Vietnam Output: Vietnam Code tham khảo const fi=''; type data=longint; var f:text; s1,s2,s:string; n,d1,d2,i:data; begin assign(f,fi); reset(f); readln(f,n); s2:=''; d1:=1; d2:=0; readln(f,s1); for i:=1 to n-1 do begin readln(f,s); if (s2='') and (s<>s1) then begin s2:=s; d2:=1; end else begin if s=s1 then