Tải bản đầy đủ (.docx) (10 trang)

CÁC bài tập THUỘC các DẠNG của cấu TRÚC đề THI TIN (1)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (64.34 KB, 10 trang )

CÁC BÀI TẬP THUỘC CÁC DẠNG CỦA CẤU TRÚC ĐỀ THI TIN

DẠNG 1: Tính chu vi, diện tích của một số hình hình học: tam giác, hình
chữ nhật, hình thang.
Ví dụ : Bài 2. Tính chu vi, diện tích của một tam giác vng có các cạnh góc vng là a, b.
Dữ liệu: vào từ tệp TAMGIAC.INP hai số nguyên dương a, b (mỗi số trên một hàng).
Kết quả: lưu vào tệp TAMGIAC.OUT chu vi P và diện tích S của tam giác (trên cùng một
hàng, cách nhau một ký tự trắng)
Ví dụ:
TAMGIAC.INP
TAMGIAC.OUT
8
40 60
15
Giải thuật: vì đây là tam giác vng, nên
- Cần phải tính thêm cạnh huyền C của tam giác đã cho.
PROGRAM tam_giac;
VAR f,g:TEXT;
s,p,a,b,c:longint;
PROCEDURE nhap;
begin
assign(f,'TAMGIAC.INP'); reset(f);
assign(g,'TAMGIAC.OUT'); rewrite(g);
readln(f,a);read(f,b);
end;
PROCEDURE xuly;
Begin
C:= trunc(sqrt(a*a+b*b));
P:=a+b+c;
S:=trunc(a*b/2);
write(g,p,#32,s);


end;
PROCEDURE dong;
begin
close(f);
close(g);
end;
BEGIN
nhap;
xuly;
dong;
END.
CÁC DẠNG BÀI TẬP VỀ TAM GIÁC THƯỜNG, CÂN, ĐỀU, HÌNH CHỮ NHẬT, HÌNH
THANG TƯƠNG TỰ NHA
Cơng thức tính chu vi, diện tích của một số hình như sau :
1


1. Tam giác thường :
Tính chu vi: Chu vi hình tam giác là tổng độ dài của 3 cạnh.3.Tính diện tích: Muốn
tính diện tích hình tam giác ta lấy độ dài đáy nhân với chiều cao ( cùng đơn vị đo) rồi chia
cho 2. S = a x h : 2
- Tính cạnh đáy: Ta lấy diện tích nhân với 2 rồi chia cho chiều cao. a = S x 2 : h- Tính
chiều cao: Ta lấy diện tích nhân với 2 rồi chia cho cạnh đáy. h = S x 2 : a
Nếu họ không cho chiều cao, mà chỉ cho 3 cạnh thì ta tính như sau :
Chu vi : p := ½*(a+b+c);
Diện tich: S:=sqrt(p*(p-a)*(p-b)*(p-c))
2. Tam giác đều :
Cv:=a*3;
S:=a*a*sqrt(3)/4
3.Tam giác cân:

CV:= a*b + a*c + b*c hoặc = 2*a*b + b*c hoặc= 2*a*c + b*c
S:=1/2*a*h
2. Hình chữ nhật
Tính chu vi: Muốn tính chu vi hình chữ nhật, ta lấy số đo chiều dài cộng số đo chiều rộng
(cùng đơn vị đo) rồi nhân với 2. CTTQ: P = ( a + b ) x 2
Muốn tìm chiều dài, ta lấy chu vi chia cho 2 rồi trừ đi chiều rộng a = P : 2 – b
• Muốn tìm chiều rộng, ta lấy chu vi chia cho 2 rồi trừ đi chiều dài. b = P : 2 - a
Tính diện tích: Muốn tính diện tích hình chữ nhật , ta lấy số đo chiều dài nhân với số đo
chiều rộng (cùng đơn vị đo). CTTQ: S = a x b
• Muốn tìm chiều dài, ta lấy diện tích chia cho chiều rộng. a = S : b
• Muốn tìm chiều rộng, ta lấy diện tích chia cho chiều dài. b = S : a
3. Hình Thang
Cv:=a+b+c+d
S:=(a+b)*h/2;

DẠNG BÀI TẬP 2. Chia lấy phần nguyên, chia lấy số dư.
Ví dụ :
Bài 1. Trong dịp 20/11 cô giáo phát đều quà cho các học sinh gồm sách, vở và bút. Tính
xem mỗi bạn được bao nhiêu sách, bao nhiêu vở, bao nhiêu bút và số lượng sách, vở, bút
còn thừa.
Dữ liệu: vào từ tệp văn bản PHATQUA.INP gồm hai hàng, hàng một ghi số học sinh N,
hàng hai ghi các số S, V, B là số lượng sách, bút, vở để phát.
Kết quả: lưu vào tệp văn bản PHATQUA.OUT gồm hai hàng, hàng một ghi số lượng sách,
bút, vở mỗi học sinh được phát, hàng hai ghi số lượng sách, bút, vở cịn thừa.
Ví dụ:
PHATQUA.INP
40
80 121 47
PHATQUA.OUT
2



231
017
PROGRAM phat_qua;
VAR f,g:TEXT;
s,b,v,n:longint;
PROCEDURE nhap;
begin
assign(f,'PHATQUA.INP'); reset(f);
assign(g,'PHATQUA.OUT'); rewrite(g);
readln(f,n);read(f,s,b,v);
end;
PROCEDURE xuly;
begin
writeln(g,s div n,#32,b div n,#32,v div n);
write(g,s mod n,#32,b mod n, #32,v mod n);
end;
PROCEDURE dong;
begin
close(f);
close(g);
end;
BEGIN
nhap;
xuly;
dong;
END.
Bài tập 2. Chia quà 20/11
Trong dịp kỷ niệm ngày Nhà giáo Việt Nam 20/11, cô giáo chia đều quà cho các học sinh

gồm kẹo, bánh và bim bim.
Yêu cầu: Tính xem mỗi người được phát bao nhiêu kẹo, bánh, bimbim và tính số lượng kẹo,
bánh, bimbim cịn thừa.
Ví dụ:
PHATQUA.INP
50 80 24
24
PHATQUA.OUT
231
280
Cách làm tương tự như bài trên

DẠNG 3. Tìm dãy số chẵn, lẻ, dãy số nguyên tố....
3


Bài 1. Nhập vào 2 số a, b. In ra màn hình các số chính phương và tổng của các số chính
phương
Program so_chinh_phuong_tu_m_den_n;
Var f,g: text;
m,n: longint;
Function cp(x:longint):boolean;
begin
cp:= false;
if sqrt(x) = trunc(sqrt(x)) then cp:= true;
end;
PROCEDURE nhap;
begin
assign(f,'CHPHUONG.INP'); reset(f);
assign(g,'CHPHUONG.OUT'); rewrite(g);

read(f,m,n);
end;
PROCEDURE xuly;
var s,i: longint;
begin
s := 0;
for i := m to n do if cp(i) then
begin
write(g,i,#32);
s := s+i;
end;
writeln(g);
write(g,s,#32);
end;
PROCEDURE dong;
begin close(f); close(g); end;
BEGIN
nhap; xuly; dong;
END.
Bài 2. Nhập vào 2 số a, b. In ra màn hình các số chẵn, hoặc lẻ, hoặc chia hết cho 5...
Thì các em làm tương tự
Nếu in ra các số chẵn thì sang phần procedure xuli; ta cho for i:= m to n do
- If i mod 2 = 0 then (là số chẵn)
- If i mod 2 = 1 then (là số lẻ)
- If i mod 5 = 0 then (là cac số chia hết cho 5)
4


Ví dụ
Đoạn này trong phần xử lý viết như vậy tương tự nhau, chỉ thay phần if

PROCEDURE xuly;
var s,i: longint;
begin
s := 0;
for i := m to n do
if i mod 2 = 0 then
begin
write(g,i,#32);
s := s+i;
end;
writeln(g);
write(g,s,#32);
end;
Nếu là bài về nguyên tố thì tương tự như bài chính phương, chỉ thay function của
nguyên tố vào
function ngto(n:longint):boolean;
var i:longint;
begin
ngto := false;
if n<2 then exit;
for i:=2 to trunc(sqrt(n)) do
if n mod i=0 then exit;
ngto := true;
end;
//trong phần xuly
PROCEDURE xuly;
var s,i: longint;
begin
s := 0;
for i := m to n do

if ngto(i) then
begin
write(g,i,#32);
s := s+i;
end;
writeln(g);
write(g,s,#32);
end;
5


DẠNG 4. tìm số chữ số, tính tổng các chữ số của một số nguyên.
VÍ DỤ : nhập vào một số ngun dương n, tìm xem trong số đó có bao nhiêu chữ số,
tính tổng các chữ số đó
- Kết quả in ra trong 2 dịng, dịng 1 là có bao nhiêu chữ số, dòng 2 là tổng
Chuso.inp chuso.out
34526
5
20
Bài này các em đã chạy được rồi
Ví dụ 2. Phân tích một số thành tổng hai số nguyên tố.
Viết chương trình đọc một số từ tệp PHANTICH.INP rồi đưa ra tệp PHANTICH.OUT từng
dòng tổng của hai số nguyên tố.
Chẳng hạn:
PHANTICH.INP
30
PHANTICH.OUT
7+23
13+19
13+17

program phantichsnto;
uses crt;
var i,j,n:integer;
f,g:text;
function ngto(n:integer):boolean;
var i:integer;
begin
ngto := false;
if n<2 then exit;
for i:= 2 to trunc(sqrt(n)) do
if n mod i = 0 then exit;
ngto := true;
end;
procedure nhap;
begin
assign(f, 'phantich.inp'); reset(f);
assign(g, 'phantich.out'); rewrite(g);
readln(f,n);
end;
procedure xuli;
begin
for i:=2 to (n div 2) do
begin
if ngto(i) and ngto(n-i) then
6


Writeln(g,i,'+',n-i);
end;
end;

procedure dong;
begin
close(f); close(g);
end;
begin
nhap;
xuli;
dong;
end.
Ví dụ 3. Phân tích một số thành tổng ba số nguyên tố.
Viết chương trình đọc một số từ tệp PHANTICH3SO.INP rồi đưa ra tệp
PHANTICH3SO.OUT từng dòng tổng của hai số nguyên tố.
Tương tự như bài trên, nhưng trong phần xử lý:
procedure xuli;
begin
for i:=2 to (n div 3) do
for j:=i to ((n-1) div 2) do
begin
if ngto(i) and ngto(j) and ngto(n-i-j) then
if (n= i+j+(n-i-j)) then
Writeln(g,i,'+',j,'+',n-i-j);
End;
End;

DẠNG 5. Bài toán thực tế liên quan đến các kiến thức số học
Bài 1. Một đơn vị bộ đội quyết định cử m sỹ quan và n chiến sỹ đi giúp đồng bào bị lũ lụt.
Hãy giúp đơn vị bộ đội chia thành các tổ sao cho số sỹ quan và chiến sỹ được chia đều cho
mỗi tổ.
Dữ liệu vào: CHIATO.INP gồm một dòng ghi hai số m, n (1<=m <=1000; 1<= n<= 1000).
Dữ liệu ra: CHIATO.OUT gồm từng dòng, mỗi dòng ghi ba số t, s, c, với t là số tổ, s là số sỹ

quan, c là số chiến sỹ trong mỗi tổ (mỗi số cách nhau một dấu cách).
Ví dụ:
CHIATO.INP
18 30
CHIATO.OUT
1 18 30
2 9 15
3 6 10
6 3 5
Program chia_to;
7


Var f,g: text;
m,n,t: longint;
Function ucln(a,b:longint):longint;
var r:longint;
begin
While b<>0 do
begin
r := a mod b; a:= b;b:= r;
end;
ucln := a;
end;
procedure nhap;
Begin
assign(f,'chiato.inp'); reset(f);
assign(g,'chiato.out'); rewrite(g);
read(f,m,n);
procedure xuli;

begin
for t := 1 to ucln(m,n) do
if ucln(m,n) mod t = 0 then
writeln(g,t,#32,m div t,#32,n div t);
end;
procedure dong;
begin
close(f);close(g);
end;
begin
nhap;
xuli;
dong;
End.
Bài tập 2. Học sinh khối 9 dự định mua sách để ủng hộ các bạn bị lũ lụt. Hãy giúp các bạn
ấy tính tổng số tiền mua sách.
Dữ liệu vào: tệp MUASACH.INP gồm từng dòng, mỗi dòng ghi 2 số m, n với m là số lượng
cuốn sách, n là giá tiền mỗi cuốn sách.
Dữ liệu ra: tệp MUASACH.OUP chỉ một số duy nhất ghi tổng số tiền mua sách.
Ví dụ:
MUASACH.INP
5 2
4 8
9 3
MUASACH.OUT
8


69
Phần xử lý:

Procedure xuli;
begin
gia := m*n;
t := t+gia;
end;
write(g,t);
end;
Bài 3. Một cơng nhân cứ một tháng làm thì một tháng nghỉ. Nếu như tháng làm người đó
làm được A (triệu) đồng thì tháng nghỉ người đó tiêu hết B (triệu) đồng. Hỏi sau N tháng
người đó dư được bao nhiêu (triệu) đồng?
Dữ liệu: Vào từ file văn bản LAMVIEC.INP gồm hai hàng, hàng một ghi hai số nguyên
dương A, B; hàng hai ghi số nguyên dương N.
Kết quả: Ghi ra file văn bản LAMVIEC.OUT số tiền người đó làm được sau N tháng.
PROGRAM viec_lam;
VAR f,g:TEXT;
s,n,a,b:longint;
PROCEDURE nhap;
begin
assign(f,'LAMVIEC.INP'); reset(f);
assign(g,'LAMVIEC.OUT'); rewrite(g);
readln(f,a,b);read(f,n);
end;
PROCEDURE xuly;
Begin
if n mod 2 = 0 then s:= (n div 2)*a - (n div 2)*b
else
s:= ((n div 2) + 1)*a - (n div 2)*b;
write(g,s);
end;
PROCEDURE dong;

begin
close(f);
close(g);
end;
BEGIN
nhap;
xuly;
dong;
END.
9


Bài 4. (ứng dụng số học vào thực tiễn) An và Bình cùng học một lớp nhưng ở hai tổ khác
nhau. An cứ A ngày thì trực nhật một lần, Bình cứ B ngày thì trực nhật một lần. Lần đầu cả
hai bạn cùng trực nhật vào một ngày.
Hỏi sau bao nhiêu ngày nữa thì cả hai bạn lại cùng trực nhật?
Dữ liệu: vào từ tệp TRUCNHAT.INP hai số A, B trên một dòng (cách một ký tự trắng);
Kết quả: ghi vào tệp TRUCNHAT.OUT số ngày tính được.
Ví dụ:
TRUCNHAT.INP
8 6
TRUCNHAT.OUT
24
uses crt;
var a,b,bc,bcnn:longint;
f,g:text;
procedure nhap;
begin
assign(f,'trucnhat.inp');reset(f);
assign(g,'trucnhat.out');rewrite(g);

read(f,a,b);
end;
procedure xuli;
begin
bc := a*b;
While a<>b do
if a>b then a:=a-b else b:=b-a;
bcnn := bc div a;
write(g,bcnn);
end;
procedure dong;
begin
close(f);
close(g);
end;
begin
nhap;
xuli;
dong;
end.

10



×