Xóa hết các ký tự không phải ký tự số trong mỗi chuỗi, loại bỏ kí tự ‘0’ ở đầu mỗi chuỗi nếu có để thu được hai con số Nếu chuỗi rỗng trả về con số 0 - In ra màn hình hai con số thu được
Trang 1MỘT SỐ BÀI TẬP Bài 1: (6 điểm) ;
Viết chương trình nhập vào 2 dãy số nguyên A, B có n phần tử khác nhau ( n nhập không quá 50) Giá trị của phần tử lớn nhất trong cả 2 dãy không quá 1000 Hãy tạo ra 1 dãy C có kết quả là hòa hai dãy A và B sao cho các phần tử trong C cũng
có giá trị tăng dần ? In kết quả từng dãy ra màn hình.
Vd : ta có A=[2 4 6 9 24 30]
B=[1 4 7 10 15 21]
Kết quả C=[1 2 4 4 6 7 9 10 15 21 24 30]
Bài 2: (7 điểm)
Viết chương trình nhập vào một chuỗi bất kì S sau đó ghi ra file KETQUA.TXT 2 kết quả: chuỗi con gồm các ký tự trong chuỗi S và tổng các giá trị của các ký tự là số trong chuỗi S.
Ví dụ :
S=’A312BC24DE’
S1=ABCDE
Tổng=12
Bài 3: Viết chương trình phân tích một số nguyên dương N ra thành thừa số
nguyên tố
Ví dụ: N=100 thì in ra 2*2*5*5 vì 100=2*2*5*5
N=13 thì in ra 13 vì 13 là số nguyên tố
29/ Nhập vào bàn phím hai chuỗi s1,s2 không quá 255 ký tự gồm ký tự số có lẫn loại ký tự khác Xóa hết các ký tự không phải ký tự số trong mỗi chuỗi, loại bỏ kí
tự ‘0’ ở đầu mỗi chuỗi nếu có để thu được hai con số (Nếu chuỗi rỗng trả về con số 0)
- In ra màn hình hai con số thu được
- In ra màn hình tổng hai con số trên
Ví dụ:
Trang 2Nhap chuoi thu nhat : ‘abc0123d@4$5]’
Nhap chuoi thu hai: ‘*\def56ab7’
So thu nhat: 12345
So thu hai : 567
Tong : 12912
Bài 4: Số hoàn hảo (6đ)
Số n gọi là số hoàn hảo, nếu như tổng các ước số của n (không kể n) bằng chính
nó
Ví dụ: 28 = 1 + 2 + 4 + 7 + 14 là số hoàn hảo
Viết chương trình (Pascal) cho nhập n nguyên, dương từ bàn phím In ra màn hình :
- Các ước số của n (không kể n)
- Xác định n có phải là số hoàn hảo
- Tất cả các số hoàn hảo trong phạm vi từ 1 n
Bài 5: Cặp số thân thiết (7đ)
Hai số nguyên dương được gọi là thân thiết nếu chúng có cùng ước số nguyên tố lớn nhất
Hãy viết chương trình kiểm tra xem hai số nguyên dương có là cặp số thân thiết hay không?
Dữ liệu vào là hai số nguyên dương a, b (1< a, b < 1010) nhập từ bàn phím
Cặp số gọi là thân thiết nếu tổng ước của a bằng b và tổng ước của b bằng a
var a,b:integer;
function tu(n:integer):integer;
var i,tong:integer;
begin
tong:=0;
for i:=1 to n do if n mod i=0 then tong:=tong+i;
Trang 3tu:=tong;
end;
begin
readln(a,b);
if (tu(a)=b) and (tu(b)=a) then Write('cap so than thiet') else write('cap so khong than thiet');
readln
end.
Bài 6: Thống kê:
Phòng giáo dục quản lí học sinh các cấp học: Mầm non, tiểu học, THCS Số học sinh quản lí có độ tuổi từ 3 đến 15 tuổi Để phục vụ cho việc báo cáo, phòng giáo dục cần thống kê số học sinh theo từng độ tuổi
Yêu cầu: Hãy viết chương trình giúp phòng giáo dục thống kê số lượng học sinh theo từng độ tuổi.
Dữ liệu: Cho từ file văn bản có tên THONGKE.INP có cấu trúc sau:
- Dòng đầu ghi số N (N<10000) là số lượng học sinh mà phòng GD quản lí
- Dòng thứ 2 ghi số N số tương ứng là số tuổi của N học sinh, mỗi số cách nhau
ít nhất một khoảng cách
- Kết quả: Ghi ra file văn bản THONGKE.OUT gồm nhiều dòng, mỗi dòng ghi
2 số: số thứ nhất là độ tuổi, số thứ hai là số lượng học sinh ở độ tuổi đó.
Ví dụ:
13
3 4 12 3 5 13 5 3 12 15 3 8 15
3 4
4 1
5 2
8 1
Trang 412 2
13 1
15 2
Bài 3
var a:array[1 100] of integer;
n,i,so:integer;
f1,f2:text;
function ucln(a,b:integer):integer;
begin
while a<>b do
if a>b then a:=a-b else b:=b-a;
ucln:=a;
end;
begin
assign(f1,'d:\input.txt');
reset(f1);
readln(f1,n);
for i:=1 to n do read(f1,a[i]);
so:=a[1];
for i:=2 to n do so:=ucln(so,a[i]); assign(f2,'d:\output.txt');
rewrite(f2);
write(f2,so);
Trang 5close(f1);
close(f2);
readln
end.
Bài 7: S chính ph ố ươ ng
S chính phố ương là s t nhiên có căn b c hai là 1 s t nhiên, hay nóiố ự ậ ố ự cách khác, s chính phố ương là bình phương (lũy th a b c hai) c a m t từ ậ ủ ộ ự nhiên
Cho s nguyên dố ương N (N<1000) và dãy A g m N s nguyên dồ ố ương a1,a2,
…,an; m i s có giá tr không vỗ ố ị ượt quá 10000
* Yêu c u:ầ
Tìm s lố ượng các s chính phố ương trong dãy A
D li u vào cho trong t p văn b n SCP.INP g m 2 dòngữ ệ ệ ả ồ
+ Dòng đ u tiên ch a s nguyên Nầ ứ ố
+ Dòng th 2 tr đi là các s nguyên dứ ở ố ương bi u di n giá tr c a cácể ễ ị ủ
ph n t trong dãy A, m i giá tr cách nhau 1 kho ng tr ng ho c xu ng dòng.ầ ử ỗ ị ả ắ ặ ố
K t qu ghi trong t p văn b n SCP.OUT là s lế ả ệ ả ố ượng các s chính phố ương trong dãy A
Ví d :ụ
4 9 8 23 16
var n,i,dem:integer;
a:array[1 100] of integer;
f:text;
function ktscp(n:integer):boolean;
begin
if n=sqr(trunc(sqrt(n))) then ktscp:=true else ktscp:=false;
end;
begin
assign(f,'d:\scp.inp');
reset(f);
readln(f,n);
for i:=1 to n do read(f,a[i]);
dem:=0;
Trang 6for i:=1 to n do if ktscp(a[i])=true then inc(dem);
assign(f,'d:\scp.out');
rewrite(f);
write(f,dem);
close(f);
readln
end.
Bài 8: C p đôi lí t ặ ưở ng:
Cho dãy s g m N s nguyên dố ồ ố ương F1,F2,…,Fn Xét hai s Fi, Fj trong dãyố (i<>j và 1<=i,j<=n) là m t c p đôi lí tộ ặ ưởng n u chúng có giá tr khác nhau, cóế ị
ít nh t 2 ch s và các ch s c a s h ng này gi ng h t c a s h ng kiaấ ữ ố ữ ố ủ ố ạ ố ệ ủ ố ạ
nh ng khác nhau v th t xu t hi n.ư ề ứ ự ấ ệ
Ví d :ụ
+ 123 và 132 hay 121 và 211 là các c p đôi lí tặ ưởng;
+ 121 và 122 hay 457 và 457 không ph i c p đôi lí tả ặ ưởng
Yêu c u:ầ
Cho bi t N và dãy s F1, F2, , Fn Hãy xác đ nh s c p đôi lý tế ố ị ố ặ ưởng trong dãy
đã cho
D li u vào cho trong t p văn b n capdoi.inpữ ệ ệ ả
- Dòng đ u tiên là s N (N<=50000)ầ ố
- Các dòng ti p theo ghi các giá tr c a dãy s (ch g m các s <1000) Cácế ị ủ ố ỉ ồ ố
s cách nhau kho ng tr ng ho c xu ng dòng.ố ả ắ ặ ố
K t qu ghi vào t p văn b n capdoi.out, ghi s c p đôi lí tế ả ệ ả ố ặ ưởng trong dãy đã cho
Ví dụ :
3 9 23 124 121 112 211 132 32 133
Gi i thu t:ả ậ
Vi t chế ương trình con ki m traể
S p x p 2 xâu s tăng d nắ ế ố ầ
N u 2 xâu b ng nhau thì c p s lí tế ằ ặ ố ưởng
Chương trình chính
Duy t m ng gi ng s p x pệ ả ố ắ ế
G i chọ ương trình con ki m tra c p s lí tể ặ ố ưởng
var a:array[1 100] of string;
n,i,j,dem:integer;
Trang 7function kt(s1,s2:string):boolean;
var tam:char;
i,j:integer;
begin
for i:=1 to length(s1)-1 do
for j:=i+1 to length(s1) do if s1[i]>s1[j] then
begin
tam:=s1[i];
s1[i]:=s1[j];
s1[j]:=tam;
end;
for i:=1 to length(s2)-1 do
for j:=i+1 to length(s2) do if s2[i]>s2[j] then
begin
tam:=s2[i];
s2[i]:=s2[j];
s2[j]:=tam;
end;
if s1=s2 then kt:=true else kt:=false;
end;
begin
write('Nhap n:');readln(n);
for i:=1 to n do
begin
write('nhap phan tu thu i:');
readln(a[i]);
end;
dem:=0;
for i:=1 to n-1 do
for j:=i+1 to n do if (a[i]<>a[j]) and (kt(a[i],a[j])=true) then inc(dem); write(dem);
readln
end.
Trang 8Bài 9: Đ nh lí 6174 ị
Dãy 6174 đ ượ ạ c t o theo cách sau:
- S h ng đ u tiên c a dãy là s nguyên dố ạ ầ ủ ố ương n1 g m 4 ch s (b nồ ữ ố ố
ch s c a s h ng đ u tiên này không đ ng th i b ng nhauữ ố ủ ố ạ ầ ồ ờ ằ
- Hai s m i (a1 và b1) đố ớ ượ ạc t o thành t s đ u tiên c a dãy S thừ ố ầ ủ ố ứ
nh t a1 có đấ ược b ng cách s p x p các ch s c a n1 theo th t gi mằ ắ ế ữ ố ủ ứ ự ả
d n và s th nhì b1 có đầ ố ứ ược b ng cách s p x p các ch s c a n1 theoằ ắ ế ữ ố ủ
th t tăng d nứ ự ầ
- S th nhì n2 c a dãy là hi u a1-b2ố ứ ủ ệ
- Ti p t c, hai s a2,b2 đế ụ ố ượ ạc t o thành t n2 từ ương t nh cách t oự ư ạ a1,b1 và s th ba n3 c a dãy là hi u a2-b2 và c th ti p t cố ứ ủ ệ ứ ế ế ụ
- Ch s 0 đ u s ( v trí th nh t tính t bên trái) v n có nghĩaữ ố ở ầ ố ị ứ ấ ừ ẫ
- D ng th c hi n phép tính tr khi k t qu v a b ng giá tr 6174ừ ự ệ ừ ế ả ừ ằ ị
Đ nh lí 6174 phát bi u r ng s h ng cu i c a dãy s xây d ng nh trênị ể ằ ố ạ ố ủ ố ự ư luôn là s 6174ố
Ví d :ụ
Xét dãy s h ng đ u tiên (n1) là 7815 ố ạ ầ Ta có
7731-1377=6354 (n3) 6543-3456=3087 (n4) 8730-0378=8352 (n5) 8532-2358 =6174 (n6) Yêu c u:ầ
Cho s nguyên dố ương n1 Xác đ nh s l n th c hi n phép toán tr đ th cị ố ầ ự ệ ừ ể ự
hi n k t qu cu i cùng theo đ nh lí 6174 nh ví d trên.ệ ế ả ố ị ư ụ
D li u vào cho trong t p văn b n dl6174.inp g m 1 dòng ch a s nguyênữ ệ ệ ả ồ ứ ố
dương n1
K t qu ghi vào t p văn b n dl6174.out ghi s l n th c hi n phép toán trế ả ệ ả ố ầ ự ệ ừ
Ví dụ
Gi i thu t ả ậ
Vi t ch ế ươ ng trình con
- Hàm s p x p tăng d n c a 1 xâu s , sau đó tr v giá tr s ắ ế ầ ủ ố ả ề ị ố
- Hàm s p x p gi m d n c a 1 xâu s , sau đó tr v giá tr s ắ ế ả ầ ủ ố ả ề ị ố
Ch ươ ng trình chính:
- Cho bi n dem:=0; ế
- Trong khi s<>’6174’ thì làm
+ kq:=sxgd-sxtd;
Trang 9+ Tr bi n k t qu thành chu i ( str(kq,chuso) ) ả ế ế ả ỗ + Gán l i chu s là chuso ạ ỗ
+ Tăng bi n dem ế
var s,s1,chu,chuso:string;
dem,kq:longint;
f:text;
function sxtd(s:string):longint;
var i,j:integer;
x,c:longint;
tam:char;
begin
for i:=1 to length(s)-1 do
for j:=i+1 to length(s) do if s[i]>s[j] then
begin
tam:=s[i];
s[i]:=s[j];
s[j]:=tam;
end;
val(s,x,c);
sxtd:=x;
end;
function sxgd(s:string):longint;
var i,j:integer;
tam:char;
x,c:longint;
begin
for i:=1 to length(s)-1 do
for j:=i+1 to length(s) do if s[i]<s[j] then
begin
tam:=s[i];
s[i]:=s[j];
s[j]:=tam;
end;
val(s,x,c);
sxgd:=x;
end;
begin
Trang 10assign(f,'d:\DL6174.INP');
reset(f);
readln(f,s);
dem:=0;
while s<>'6174' do
begin
kq:=sxgd(s)-sxtd(s);
str(kq,chuso);
s:=chuso;
inc(dem);
end;
assign(f,'d:\dl6174.out');
rewrite(f);
write(f,dem);
close(f);
readln
end.
Bài 10: Mật khẩu
Cu Tí thường xuyên tham gia thi lập trình trên mạng Vì đạt được thành tích cao nên Tí được gửi tặng một phần mềm diệt virus Nhà sản xuất phần mềm cung cấp cho Tí một mã số là một số nguyên dương N có không quá 255 chữ số Để cài đặt được phần mềm, Tí phải nhập vào mật khẩu của phần mềm Mật khẩu là một số nguyên dương M được tạo ra bằng cách tính tổng giá trị các chữ số của N
Yêu cầu: Hãy tìm số nguyên dương M.
Dữ liệu vào: Cho trong file văn bản MK.INP có cấu trúc như sau:
- Dòng 1: Ghi số nguyên dương N.
Dữ liệu ra: Ghi ra file văn bản MK.OUT theo cấu trúc như sau:
- Dòng 1: Ghi số nguyên dương M tìm được.
Ví dụ:
var f1,f2:text;
i,x,mk:integer;
s:string;
begin
assign(f1,'d:\input.txt');
reset(f1);
readln(f1,s);
Trang 11for i:=1 to length(s) do
begin
val(s[i],x);
mk:=mk+x;
end;
assign(f2,'d:\output.txt');
rewrite(f2);
write(f2,mk);
close(f1);
close(f2);
readln
end.
Bài 12: Số siêu nguyên tố File bài làm: SNT.PAS
Tại Vương quốc Byte xinh đẹp, mỗi người luôn chọn cho mình một con số, theo họ số nguyên tố là số mang lại sự may mắn và ai tìm được một số siêu nguyên tố còn may mắn hơn nữa Số siêu nguyên tố là một số nguyên tố mà khi bỏ 1 số tùy ý các chữ số bên phải của nó thì phần còn lại vẫn là 1 số nguyên tố Số 2333 là 1 số siêu nguyên tố vì 2333 là một số nguyên tố và 233, 23, 2 cũng là các số nguyên tố.
Dữ liệu vào: SNT.INP Chứa một số nguyên dương n (n ≤ 109 )
Dữ liệu ra: SNT.OUT Nếu N là siêu nguyên tố ghi giá trị 1, ngược lại ghi giá trị 0
Ví dụ:
Bài 13: ƯỚC SỐ NGUYÊN TỐ
Bài 11:
Trang 12- Khái niệm:
+ Số nguyên b (b<>0) gọi là ước số của số nguyên a, nếu a chia hết cho b.
+ Số tự nhiên n ( n>1) gọi là số nguyên tố nếu số n chỉ có ước số là 1 và chính nó.
- Yêu cầu: Nhập số tự nhiên n từ bàn phím ( 0<n<10000) Xuất ra màn hình:
a) Các ước số là số tự nhiên của n.
b) Các ước số là số nguyên tố của n, nếu không có ước số nguyên tố xuất ra
số 0.
. - Ví dụ:
12 - Cac uoc la: 1 2 3 4 6 12
- Cac uoc nguyen to: 2 3
Bài 14 : TÌM MẬT KHẨU
Việc bảo vệ máy tính để hạn chế người khác thâm nhập là một vấn đề đặt ra cho mọi nguời sử dụng máy tính Để tăng tính an toàn trong lưu trữ, một nguời đã quyết định giấu mật khẩu truy cập máy tính của mình vào một xâu S với một qui ước sao cho khi cần anh ta có thể lấy lại được mật khẩu từ S Là một người yêu thích số học anh ta chọn mật khẩu P là một số tự nhiên và mã hóa P = P1 + P2 + … +Pi với (Pi là số nguyên, 0<=Pi<=9, 0<i<200) đem dấu các số Pi vào một xâu ký tự S.
Chẳng hạn xâu S=’mat #223 ma 678 @’ chứa mật khẩu là 28 vì P=2+2+3+6+7+8
- Yêu cầu: Cho một xâu ký tự S chiều dài không quá 255 ký tự Tìm mật khẩu P
đã dấu trong xâu S biết P có giá trị nhỏ hơn 1000
- Dữ liệu vào: Từ tệp văn bản PWORD.INP gồm 1 dòng duy nhất là xâu S
- Kết quả: Ghi vào tệp văn bản PWORD.OUT chứa số P tìm được.
- Ví dụ:
Bài 5 TIN NHẮN SMS
Trang 13Trong dịp hè, một công ty viễn thông dự kiến cải tiến cách tính cước tin nhắn SMS trên các thiết bị di động, bằng cách tính cước trên số lượng các kí tự trong tin nhắn, mỗi
kí tự có giá là 10 đồng Nhằm thu hút khách hàng và đảm bảo doanh thu, công ty đưa ra chính sách khuyến mãi:
- Không tính tiền các kí tự xuất hiện lần thứ hai trở lên trong tin nhắn (các kí tự giống nhau chỉ tính 1 lần), không phân biệt kí tự hoa và kí tự thường.
- Tin nhắn có độ dài không quá 255 kí tự, chỉ gồm các kí tự trong bảng chữ cái Tiếng Anh và kí tự trắng.
Em hãy giúp công ty tính cước tin nhắn SMS trong đợt khuyến mãi này.
Yêu cầu: Nhập một tin nhắn từ bàn phím Tính tiền khách hàng phải trả trong đợt
khuyến mãi Xuất kết quả ra màn hình.
Ví dụ: (Kí hiệu thay thế kí tự trắng)
Nhap noi dung tin nhan: AnhBaA So tien la: 50 Tin nhắn có độ dài là 8,
nhưng có 3 kí tự khuyến mãi (1 kí tự trắng và 2 kí tự A).
Số kí tự tính tiền: 8-3=5
Số tiền là: 5x10=50 đồng.
Gợi ý: Xóa trùng lấy length(s)*10