Lời giải 100 đề TIN HỌC VÀ NHÀ TRƯỜNG
Chia sẻ bởi Đặng Ngọc Dương |
Ngày 16/10/2018 |
118
Chia sẻ tài liệu: Lời giải 100 đề TIN HỌC VÀ NHÀ TRƯỜNG thuộc Tư liệu tham khảo
Nội dung tài liệu:
Lời giải đề Toán Tin
Tin học & Nhà trường
Mục lục
Bài 1/1999 - Trò chơi cùng nhau qua cầu 4
Bài 2/1999 - Tổ chức tham quan 4
Bài 3/1999 - Mạng tế bào 6
Bài 4/1999 - Trò chơi bốc sỏi 8
Bài 5/1999 - 12 viên bi 8
Bài 6/1999 - Giao điểm các đường thẳng 13
Bài 7/1999 - Miền mặt phẳng chia bởi các đường thẳng 15
Bài 8/1999 - Cân táo 17
Bài 9/1999 - Bốc diêm 17
Bài 10/1999 - Dãy số nguyên 18
Bài 11/1999 - Dãy số Fibonaci 19
Bài 12/1999 - N-mino 20
Bài 13/1999 - Phân hoạch hình chữ nhật 26
Bài 14/2000 - Tìm số trang sách của một quyển sách 27
Bài 15/2000 - Hội nghị đội viên 27
Bài 16/2000 - Chia số 28
Bài 17/2000 - Số nguyên tố tương đương 28
Bài 18/2000 - Sên bò 29
Bài 19/2000 - Đa giác 30
Bài 20/2000 - Bạn Lan ở căn hộ số mấy? 32
Bài 21/2000 - Những trang sách bị rơi 32
Bài 22/2000 - Đếm đường đi 32
Bài 23/2000 - Quay Rubic 33
Bài 24/2000 - Sắp xếp dãy số 35
Bài 25/2000 - Xây dựng số 35
Bài 26/2000 - Tô màu 35
Bài 27/2000 - Bàn cờ 36
Bài 28/2000 - Đổi tiền 37
Bài 29/2000 - Chọn bạn 37
Bài 30/2000 - Phần tử yên ngựa 38
Bài 32/2000 - Bài toán 8 hậu 39
Bài 33/2000 - Mã hoá văn bản 40
Bài 34/2000 - Mã hoá và giải mã 41
Bài 35/2000 - Các phân số được sắp xếp 42
Bài 36/2000 - Anh chàng hà tiện 43
Bài 37/2000 - Số siêu nguyên tố 44
Bài 52/2001 - Xác định các tứ giác đồng hồ trong ma trận 66
Bài 53/2001 - Lập lịch tháng kỳ ảo 69
Bài 54/2001 - Bạn hãy gạch số 70
Bài 55/2001 - Bài toán che mắt mèo 70
Bài 56/2001 - Chia lưới 71
Bài 57/2001 - Chọn số 73
Bài 58/2001 - Tổng các số tự nhiên liên tiếp 74
Bài 59/2001 - Đếm số ô vuông 74
Bài 60/2001 - Tìm số dư của phép chia 75
Bài 61/2001 - Thuật toán điền số vào ma trận 76
Bài 62/2001 - Chèn Xâu 76
Bài 63/2001 - Tìm số nhỏ nhất 78
Bài 64/2001 - Đổi ma trận số 78
Bài 65/2001 - Lưới ô vuông vô hạn 79
Bài 66/2001 - Bảng số 9 x 9 80
Bài 67/2001 - Về các phép biến đổi "Nhân 2 trừ 1" 80
Bài 68/2001 - Hình tròn và bảng vuông 82
Bài 69/2001 - Bội số của 36 83
Bài 70/2001 - Mã hoá theo khoá 83
Bài 71/2001 - Thực hiện phép nhân 84
Bài 72/2001 - Biến đổi trên lưới số 85
Bài 73/2001 - Bài toán chuỗi số 87
Bài 74/2001 - Hai hàng số kỳ ảo 87
Bài 75/2001 - Trò chơi Tích - Tắc vuông 90
Bài 76/2001 - Đoạn thẳng và hình chữ nhật 94
Bài 77/2001 - Xoá số trên bảng 95
Bài 78/2001 - Cà rốt và những chú thỏ 95
Bài 79/2001 - Về một ma trận số 96
Bài 80/2001 - Xếp số 1 trên lưới 98
Bài 81/2001 - Dãy nghịch thế 101
Bài 82/2001 - Gặp gỡ 102
Bài 83/2001 - Các đường tròn đồng tâm 107
Bài 84/2001 - Cùng một tích 108
Bài 85/2001 - Biến đổi 0 - 1 109
Bài 86/2001 - Dãy số tự nhiên logic 111
Bài 87/2001 - Ghi các số trên bảng 111
Bài 88/2001 - Về các số đặc biệt có 10 chữ số 111
Bài 89/2001 - Chữ số thứ N 112
Bài 90/2002 - Thay số trong bảng 9 ô 113
Bài 91/2002 - Các số lặp 113
Bài 92/2002 - Dãy chia hết 116
Bài 93/2002 - Trò chơi bắn bi 118
Bài 94/2002 - Biểu diễn tổng các số Fibonaci 118
Bài 95/2002 - Dãy con có tổng lớn nhất 118
Bài 96/2002 - Số chung lớn nhất 119
Bài 97/2002 - Thay số trong bảng 121
Bài 100/2002 - Mời khách dự tiệc 121
Bài 1/1999 - Trò chơi cùng nhau qua cầu
(Dành cho học sinh Tiểu học)
Đáp số: 17 phút. Cách đi như sau:
Lượt 1: 2 + 1 sang, 1 quay về thời gian: 3 phút
Lượt 2: 10 + 5 sang, 2 quay về thời gian: 12 phút
Lượt 3: 2 + 1 sang thời gian: 2 phút
Tổng thời gian: 17 phút
Bài 2/1999 - Tổ chức tham quan
(Dành cho học sinh THCS)
Program bai2;
uses crt;
const fi = `P2.inp`;
fo = `P2.out`;
type _type=array[1..2] of integer;
mang=array[1..200] of _type;
var f:text;
d,v:mang;
m,n:byte;
procedure input;
var i:byte;
begin
assign(f,fi);
reset(f);
readln(f,n,m);
for i:=1 to n do
begin
read(f,d[i,1]);
d[i,2]:=i;
end;
readln(f);
for i:=1 to m do
begin
read(f,v[i,1]);
v[i,2]:=i;
end;
close(f);
end;
procedure sapxeptang(var m:mang;n:byte);
var d:_type;
i,j:byte;
begin
for i:=1 to n-1 do
for j:=i+1 to n do
if m[j,1]m[i,1] then
begin
d:=m[j];
m[j]:=m[i];
m[i]:=d;
end;
end;
var i:byte;
tong:integer;
begin
input;
sapxeptang(d,n);
sapxeptang(v,m);
tong:=0;
for i:=1 to n do tong:=tong+v[n-i+1,1]*d[i,1];
for i:=1 to n do v[i,1]:=d[n-i+1,2];
xapxeptang(v,n);
assign(f,fo);
rewrite(f);
writeln(f,tong);
for i:=1 to n do writeln(f,v[i,2]);
close(f);
end.
Nhận xét: Chương trình trên sẽ chạy chậm nếu chúng ta mở rộng bài toán (chẳng hạn n <= m <= 8000). Sau đây là cách giải khác:
const
Inp = `P2.INP`;
Out = `P2.OUT`;
var
n, m: Integer;
Val, Pos: array[1..2, 1..8000] of Integer;
procedure ReadInput;
var
i: Integer;
hf: Text;
begin
Assign(hf, Inp);
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, Out);
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 3/1999 - Mạng tế bào
(Dành cho học sinh THPT)
Program Bai3;
uses crt;
const fi = `P3.inp`;
fo = `P3.out`;
type mang=array[0..201,0..201] of byte;
var m,n,t:byte;
s:string;
a:mang;
f:text;
b,c:^mang;
procedure input;
var i,j:byte;
begin
assign(f,fi);
reset(f);
readln(f,m,n,t);
readln(f,s);
for i:=1 to m do
begin
for j:=1 to n do read(f,a[i,j]);
end;
close(f);
new(b);
new(c);
end;
procedure hien;
var i,j:byte;
begin
for i:=1 to m do
for j:=1 to n do
begin
gotoxy(j*2,i);
write(b^[i,j]);
end;
end;
procedure trans(ch:char);
var i,j,d:byte;
begin
fillchar(c^,sizeof(mang),0);
for i:=1 to m do
for j:=1 to n do
begin
d:=b^[i,j];
case a[i,j] of
1:inc(c^[i,j-1],d);
2:inc(c^[i,j+1],d);
3:inc(c^[i-1,j],d);
4:inc(c^[i+1,j],d);
5:begin inc(c^[i-1,j],d);inc(c^[i+1,j],d); end;
6:begin inc(c^[i,j-1],d);inc(c^[i,j+1],d); end;
7:begin inc(c^[i,j-1],d);inc(c^[i-1,j],d); end;
8:begin inc(c^[i,j+1],d);inc(c^[i+1,j],d); end;
end;
end;
if ch<>`X` then b^[1,1]:=ord(ch)-48;
for i:=1 to m do
for j:=1 to n do
if (i<>1) or (j<>1) then b^[i,j]:=byte(c^[i,j]<>0);
hien;
readln;
end;
procedure output;
var i,j:byte;
begin
assign(f,fo);
rewrite(f);
for i:=1 to m do
begin
for j:=1 to n do write(f,` `,b^[i,j]);
writeln(f);
end;
close(f);
end;
var i:byte;
begin
clrscr;
input;
fillchar(b^,sizeof(mang),0);
fillchar(c^,sizeof(mang),0);
for i:=1 to t do trans(s[i]);
output;
end.
Bài 4/1999 - Trò chơi bốc sỏi
(Dành cho học sinh Tiểu học)
Huy sẽ là người thắng cuộc. Thật vậy số sỏi ban đầu là 101 là một số có dạng 5k+1, nghĩa là số nếu chia 5 sẽ còn dư 1. Hoàng phải bốc trước, do số sỏi của Hoàng phải lấy là từ 1 đến 4 do đó sau lượt đi đầu tiên, số sỏi còn lại sẽ lớn hơn 96. Huy sẽ bốc tiếp theo sao cho số sỏi còn lại phải là 96, nghĩa là số dạng 5k+1. Tương tự như vậy, Huy luôn luôn chủ động được để sau lần bốc của mình số sỏi còn lại là 5k+1. Lần cuối cùng số sỏi còn lại chỉ là 1 và Hoàng bắt buộc phải bốc viên cuối cùng và ... thua.
Bài toán tổng quát: có thể cho số viên bi là 5k+1 viên.
Bài 5/1999 - 12 viên bi
(Dành cho học sinh THCS)
Ta sẽ chỉ ra rằng tồn tại 3 lần cân để chỉ ra được viên bi đặc biệt đó.
Gọi các viên bi này lần lượt là 1, 2, ..., 12. Trong khi mô tả thuật toán ta dùng ký hiệu
để mô tả quả hòn bi thứ n
để mô tả một hòn bi bất kỳ
Mô tả một phép cân.
Ta gọi viên bi có trọng lượng khác là đđ.
I. Lần cân thứ nhất. Lấy ra 8 hòn bi bất kỳ và chia làm 2 phần để cân:
Có 2 trường hợp xảy ra:
1.1. Cân trên cân bằng. Suy ra viên bi đđ (không rõ nặng nhẹ) nằm trong 4 viên bi còn lại (không mang ra cân)
1.2. Cân trên không cân bằng.
1.2.1. Nếu (1) nhẹ hơn (2) suy ra hoặc đđ là nhẹ nằm trong (1) hoặc đđ là nặng nằm trong (2).
1.2.2. Nếu (1) nặng hơn (2) suy ra hoặc đđ là nặng nằm trong (1) hoặc đđ là nhẹ nằm trong (2).
Dễ thấy các trường hợp 1.2.1. và 1.2.2. là tương tự nhau.
Trong mọi trường hợp ta có kết luận đđ nằm trong số 8 viên hoặc nhẹ trong 4 hoặc nặng trong 4 còn lại.
II. Xét trường hợp 1.1: Tìm được 4 viên bi chứa đđ
Gọi các hòn bi này là 1, 2, 3, 4
Lần cân thứ hai:
Xét các trường hợp sau:
2.1. Cân thăng bằng. Kết luận: viên bi 4 chính là đđ.
2.2. Trường hợp cân trái nhẹ hơn phải (dấu <). Suy ra hoặc 3 là đđ nặng, hoặc 1 hoặc 2 là đđ nhẹ.
2.3. Trường hợp cân trái nặng hơn phải (dấu >). Suy ra hoặc 3 là đđ nhẹ, hoặc 1 hoặc 2 là đđ nặng.
Dễ thấy rằng các trường hợp 2.2. và 2.3. là tương tự nhau.
III. Xét trường hợp 2.1: viên bi 4 chính là đđ
Lần cân thứ ba:
Nếu cân nghiêng < thì 4 là đđ nhẹ, nếu cân nghiêng > thì 4 là đđ nặng.
IV. Xét trường hợp 2.2. Hoặc 3 là đđ nặng, hoặc 1 hoặc 2 là đđ nhẹ.
Lần cân thứ ba:
Nếu cân thăng bằng thì ta có 1 là hòn bi đđ nhẹ.
Nếu cân nghiêng > thì ta có 3 là hòn bi đđ nặng.
Nếu cân nghiêng < thì ta có 2 là hòn bi nhẹ.
V. Xét trường hợp 2.3. Hoặc 3 là đđ nhẹ, hoặc 1 hoặc 2 là đđ nặng.
Cách làm tương tự trường hợp 2.2 mô tả trong mục IV ở trên.
VI. Xét trường hợp 1.2.1.
Hoặc đđ là nhẹ trong 1, 2, 3, 4 hoặc đđ là nặng trong 5, 6, 7, 8.
Lần cân thứ hai:
6.1. Trường hợp cân thăng bằng. Suy ra đđ sẽ phải nằm trong 4, 7, 8, và do đó theo giả thiết của trường hợp này ta có hoặc đđ là 4 nhẹ, hoặc đđ là nặng trong 7, 8. Dễ nhận thấy trường hợp này hoàn toàn tương tự như 2.2. Bước tiếp theo làm tương tự như mô tả trong IV.
6.2. Trường hợp cân nghiêng <, suy
* Một số tài liệu cũ có thể bị lỗi font khi hiển thị do dùng bộ mã không phải Unikey ...
Người chia sẻ: Đặng Ngọc Dương
Dung lượng: 2,72MB|
Lượt tài: 1
Loại file: doc
Nguồn : Chưa rõ
(Tài liệu chưa được thẩm định)