Đề thi và đáp án HSG lớp 12 (lần 1) môn Tin học tỉnh Ninh Bình 2012-2013

- 0 / 0
(Tài liệu chưa được thẩm định)
Nguồn: st
Người gửi: Phan Tuấn Hải (trang riêng)
Ngày gửi: 20h:28' 06-04-2016
Dung lượng: 292.1 KB
Số lượt tải: 17
Nguồn: st
Người gửi: Phan Tuấn Hải (trang riêng)
Ngày gửi: 20h:28' 06-04-2016
Dung lượng: 292.1 KB
Số lượt tải: 17
Số lượt thích:
0 người
HƯỚNG DẪN CHẤM THI CHỌN HỌC SINH GIỎI LỚP 12 THPT
Kỳ thi thứ nhất - Năm học 2012 – 2013
MÔN: TIN HỌC
Chấm bằng chương trình tự động AMM2:
Câu 1: 10 test, mỗi test đúng cho 0,5 điểm.
Câu2: 10 test, mỗi test đúng cho 0,5 điểm.
Câu3: 10 test, mỗi test đúng cho 0,5 điểm.
Câu 4: 10 test, mỗi test đúng cho 0,5 điểm.
Bài 1
const
finp = `TOUR.INP`;
fout = `TOUR.OUT`;
var
n, m: Integer;
Val, Pos: array[1..2, 1..8000] of Integer;
{=================================================}
procedure ReadInput;
var
i: Integer;
hf: Text;
begin
Assign(hf, finp);
Reset(hf);
Readln(hf, n, m);
for i := 1 to n do Read(hf, Val[1, i]);
Readln(hf);
for i := 1 to m do Read(hf, Val[2, i]);
Close(hf);
for i := 1 to m do
begin
Pos[1, i] := i;
Pos[2, i] := i;
end;
end;
{=================================================}
procedure QuickSort(t, l, r: Integer);
var
x, tg, i, j: Integer;
begin
x := Val[t, (l + r) div 2];
i := l; j := r;
repeat
while Val[t, i] < x do Inc(i);
while Val[t, j] > x do Dec(j);
if i <= j then
begin
Tg := Val[t, i]; Val[t, i] := Val[t, j]; Val[t, j] := Tg;
Tg := Pos[t, i]; Pos[t, i] := Pos[t, j]; Pos[t, j] := Tg;
Inc(i); Dec(j);
end;
until i > j;
if i < r then QuickSort(t, i, r);
if j > l then QuickSort(t, l, j);
end;
{=================================================}
procedure WriteOutput;
var
i: Integer;
Sum: LongInt;
hf: Text;
begin
Sum := 0;
for i := 1 to n do Inc(Sum, Val[1, n - i + 1] * Val[2, i]);
for i := 1 to n do Val[1, Pos[1, n - i + 1]] := Pos[2, i];
Assign(hf, fout);
Rewrite(hf);
Writeln(hf, Sum);
for i := 1 to n do Writeln(hf, Val[1, i]);
Close(hf);
end;
begin
ReadInput;
QuickSort(1, 1, n);
QuickSort(2, 1, m);
WriteOutput;
end.
Bài 2:
const fi = `HAIVAN.INP`;
fo = `HAIVAN.OUT`;
nmax = 100005;
Var v,r:array[1..nmax] of longint;
vipham:array[1..nmax]of boolean;
n,k,m:longint;
procedure nhap;
var f:text;
i,j:longint;
begin
assign(f,fi);
reset(f);
readln(f,n);
for i:=1 to n do read(f,v[i]);
readln(f);
for j:=1 to n do read(f,r[j]);
close(f);
end;
procedure xuly;
Var i,j:longint;
f:text;
begin
k:=0;
for i:=1 to n do
if v[i]<>r[i] then inc(k);
fillchar(vipham,sizeof(vipham),false);
m:=0;
j:=0;
for i:=1 to n do
if vipham[v[i]]=false then
Repeat
inc(j);
if r[j]<>v[i] then
begin
inc(m);
vipham[r[j]]:=true;
end;
Until r[j] = v[i];
assign(f,fo);
rewrite
Kỳ thi thứ nhất - Năm học 2012 – 2013
MÔN: TIN HỌC
Chấm bằng chương trình tự động AMM2:
Câu 1: 10 test, mỗi test đúng cho 0,5 điểm.
Câu2: 10 test, mỗi test đúng cho 0,5 điểm.
Câu3: 10 test, mỗi test đúng cho 0,5 điểm.
Câu 4: 10 test, mỗi test đúng cho 0,5 điểm.
Bài 1
const
finp = `TOUR.INP`;
fout = `TOUR.OUT`;
var
n, m: Integer;
Val, Pos: array[1..2, 1..8000] of Integer;
{=================================================}
procedure ReadInput;
var
i: Integer;
hf: Text;
begin
Assign(hf, finp);
Reset(hf);
Readln(hf, n, m);
for i := 1 to n do Read(hf, Val[1, i]);
Readln(hf);
for i := 1 to m do Read(hf, Val[2, i]);
Close(hf);
for i := 1 to m do
begin
Pos[1, i] := i;
Pos[2, i] := i;
end;
end;
{=================================================}
procedure QuickSort(t, l, r: Integer);
var
x, tg, i, j: Integer;
begin
x := Val[t, (l + r) div 2];
i := l; j := r;
repeat
while Val[t, i] < x do Inc(i);
while Val[t, j] > x do Dec(j);
if i <= j then
begin
Tg := Val[t, i]; Val[t, i] := Val[t, j]; Val[t, j] := Tg;
Tg := Pos[t, i]; Pos[t, i] := Pos[t, j]; Pos[t, j] := Tg;
Inc(i); Dec(j);
end;
until i > j;
if i < r then QuickSort(t, i, r);
if j > l then QuickSort(t, l, j);
end;
{=================================================}
procedure WriteOutput;
var
i: Integer;
Sum: LongInt;
hf: Text;
begin
Sum := 0;
for i := 1 to n do Inc(Sum, Val[1, n - i + 1] * Val[2, i]);
for i := 1 to n do Val[1, Pos[1, n - i + 1]] := Pos[2, i];
Assign(hf, fout);
Rewrite(hf);
Writeln(hf, Sum);
for i := 1 to n do Writeln(hf, Val[1, i]);
Close(hf);
end;
begin
ReadInput;
QuickSort(1, 1, n);
QuickSort(2, 1, m);
WriteOutput;
end.
Bài 2:
const fi = `HAIVAN.INP`;
fo = `HAIVAN.OUT`;
nmax = 100005;
Var v,r:array[1..nmax] of longint;
vipham:array[1..nmax]of boolean;
n,k,m:longint;
procedure nhap;
var f:text;
i,j:longint;
begin
assign(f,fi);
reset(f);
readln(f,n);
for i:=1 to n do read(f,v[i]);
readln(f);
for j:=1 to n do read(f,r[j]);
close(f);
end;
procedure xuly;
Var i,j:longint;
f:text;
begin
k:=0;
for i:=1 to n do
if v[i]<>r[i] then inc(k);
fillchar(vipham,sizeof(vipham),false);
m:=0;
j:=0;
for i:=1 to n do
if vipham[v[i]]=false then
Repeat
inc(j);
if r[j]<>v[i] then
begin
inc(m);
vipham[r[j]]:=true;
end;
Until r[j] = v[i];
assign(f,fo);
rewrite
 
↓ CHÚ Ý: Bài giảng này được nén lại dưới dạng RAR và có thể chứa nhiều file. Hệ thống chỉ hiển thị 1 file trong số đó, đề nghị các thầy cô KIỂM TRA KỸ TRƯỚC KHI NHẬN XÉT ↓















Các ý kiến mới nhất