TỔNG QUAN BÀI THI
Hãy lập trình giải các bài toán sau:
Bài 1:
Min- Max. (6 điểm)
Cho một bảng số A có kích thước nxn (n ≤ 100).
Mỗi ô của bảng số chứa một số nguyên dương m bất kỳ.
Yêu cầu: Tìm số có giá
trị nhỏ nhất và số có giá trị lớn nhất trong bảng số đã cho.
Dữ liệu
vào: Từ file văn bản MINMAX.INP gồm:
- Dòng đầu là số nguyên dương n.
- n dòng tiếp theo, mỗi dòng n số nguyên dương (bảng
số A).
(các số trên một dòng cách nhau ít nhất một khoảng
trắng)
Dữ liệu
ra: Đưa vào file văn bản MINMAX.OUT
gồm:
- Dòng đầu là số có giá trị nhỏ nhất.
- Dòng thứ 2 là số có giá trị lớn nhất.
Ví dụ:
Bài 2: Số La Mã. (7 điểm)
Số La Mã hay chữ số La Mã là hệ thống chữ số cổ đại, dựa
theo chữ số Etruria. Hệ thống chữ
số La Mã dùng trong thời cổ đại đã được người ta chỉnh sửa vào thời Trung Cổ
để biến nó thành dạng mà chúng ta sử dụng ngày nay. Hệ thống này dựa trên một số
ký tự nhất định được coi là chữ số sau khi được gán giá trị, có 7 chữ số La Mã cơ
bản: I=1, V=5, X=10, L=50, C=100, D=500, M=1000. Quy tắc viết số La Mã:
+ Các chữ số I, X, C, M không được lặp lại quá ba lần
liên tiếp; các chữ số V, L, D không được lặp lại quá một lần liên tiếp.
+ I chỉ có thể đứng trước V hoặc X; X chỉ có thể đứng
trước L hoặc C; C chỉ có thể đứng trước D hoặc M.
Cho một số B dưới dạng La Mã (giá trị thập phân của B<4000).
Yêu cầu:
Đổi số La Mã về giá trị thập phân.
Dữ liệu vào:
Từ file văn bản LAMA.INP chứa 1 số La Mã B.
Dữ liệu
ra: Đưa vào file văn bản LAMA.OUT
chứa giá trị thập phân của số La Mã B.
Ví dụ:
Bài 3: Diện tích. (7 điểm)
Trong mặt phẳng tọa độ trực chuẩn, cho n hình chữ nhật
có các cạnh song song với trục tọa độ. Mỗi hình chữ nhật được xác định bởi tọa
độ đỉnh dưới bên trái và đỉnh trên bên phải của nó.
Yêu cầu: Hãy tính diện tích phần mặt phẳng bị phủ bởi các
hình chữ nhật trên.
Dữ liệu
vào: Từ file văn bản DIENTICH.INP gồm:
- Dòng đầu là số nguyên dương n.
- n dòng tiếp theo, mỗi dòng ghi 4 số nguyên x1, y1, x2,
y2 lần lượt là tọa độ đỉnh dưới bên trái và đỉnh trên bên phải của hình chữ
nhật thứ i.
(các số trên một dòng cách nhau ít nhất một khoảng
trắng)
Dữ liệu
ra: Đưa vào file văn bản DIENTICH.OUT chứa một số nguyên là diện tích phần
mặt phẳng bị phủ bởi các hình chữ nhật trên.
Ví dụ:
Hình minh họa diện tích bị phủ của ví dụ trên:
---Hết---
Ghi chú:
·
Thí sinh không được sử dụng tài liệu.
·
Giám thị không giải thích gì thêm.
|
ĐÁP ÁN:
BÀI 1:
program min_max;
const fi='minmax3.inp';
fo='minmax3.out';
var n,m,i,j:byte;
a:array[1..100,1..100]of byte;
procedure nhap;
var f:text;
begin
assign(f,fi);reset(f);
readln(f,n);
for i:=1 to n do
begin
for j:=1 to n do read(f,a[i,j]);
readln(f);
end;
close(f);
end;
procedure xuly;
var min,max:byte; f:text;
begin
min:=a[1,1];max:=min;
assign(f,fo); rewrite(f);
for i:=1 to n do
for j:=1 to n do
begin
if max<a[i,j] then max:=a[i,j];
if min>a[i,j] then min:=a[i,j];
end;
writeln(f,min);
writeln(f,max);
close(f);
end;
begin
nhap;
xuly;
end.
BÀI 2:
program tinh_so_la_ma;
const fi='lama3.inp';
fo='lama3.out';
var r:string;
procedure nhap;
var f:text;
begin
assign(f,fi); reset(f);
readln(f,r);
close(f);
end;
function lama(r:string; i:integer):integer;
var x:integer;
function giatri(c:char):integer;
begin
case c of
'M','m': giatri:=1000;
'D','d': giatri:=500;
'C','c': giatri:=100 ;
'L','l': giatri:=50;
'X','x': giatri:= 10;
'V','v': giatri:=5;
'I','i': giatri:= 1;
else
giatri:=0;
end;
end;
begin
x:=giatri(r[i]);
if i=length(r) then lama:=x
else
if x<giatri(r[i+1]) then
lama:=-x+lama(r,i+1)
else lama:=x+lama(r,i+1);
end;
procedure xuat;
var g:text;n:integer;
begin
assign(g,fo);
rewrite(g);
n:=lama(r,1);
writeln(g,n);
close(g);
end;
begin
nhap;
xuat;
end.
BÀI 3:
program tinh_dien_tich;
const fi='dientic3.inp';
fo='dientic3.out';
maxn=100;
type hcn=record x1,x2,y1,y2:integer; end;
mang=array[1..2*maxn] of integer;
var n,i,j,k:integer;
a:array[1..maxn] of hcn;
x,y:mang; s:longint;
procedure nhap;
var f:text;
begin
assign(f,fi); reset(f);
readln(f,n);
for i:=1 to n do
readln(f,a[i].x1,a[i].y1,a[i].x2,a[i].y2);
close(f);
end;
procedure sort(var b:mang);
var i,j,k:integer;
begin
for i:=2 to 2*n-1 do
for j:=2*n downto i do
if b[j]<b[j-1] then
begin
k:=b[j];
b[j]:=b[j-1];
b[j-1]:=k;
end;
end;
function kiemtra(i1,j1:integer):boolean;
begin
kiemtra:=true;
for k:=1 to n do
if (a[k].x1<=x[i1-1])and(x[i1]<=a[k].x2) and
(a[k].y1<=y[j1-1])and(y[j1]<=a[k].y2) then exit;
kiemtra:=false;
end;
procedure xuly;
var f:text;
begin
s:=0;
for i:=1 to n do
begin
x[i*2-1]:=a[i].x1;
x[i*2]:=a[i].x2;
y[i*2-1]:=a[i].y1;
y[i*2]:=a[i].y2;
end;
sort(x);
sort(y);
for i:=2 to 2*n do
for j:=2 to 2*n do
if kiemtra(i,j) then
s:=s+(x[i]-x[i-1])*(y[j]-y[j-1] );
assign(f,fo); rewrite(f);
writeln(f,s);
close(f);
end;
begin
nhap; xuly;
end.
Không có nhận xét nào:
Đăng nhận xét