Tuyển tập các đề thi tin học

S

starlove_trainer

http://vnoi.info/index.php?option=com_content&task=view&id=170&Itemid=70

hình bạn xem tại link trên :

Bài 4. Phép chia đôi Tên chương trình: BISECTION.PAS
Ta gọi phép chia đôi tam giác theo cạnh dài nhất là việc dựng đường trung tuyến xuống cạnh có độ dài lớn nhất của tam giác (nếu có nhiều cạnh có cùng độ dài lớn nhất thì chọn tuỳ ý một trong số chúng) chia tam giác ra thành hai tam giác. Cho tam giác T0,0. Thực hiện phép chia đôi tam giác T0,0 theo cạnh dài nhất ta thu được hai tam giác T1,0 và T1,1. Đối với hai tam giác vừa thu được T1,0 và T1,1 ta lại áp dụng phép chia đôi theo cạnh dài nhất và nhận được 4 tam giác T2,0, T2,1, T2,2 và T2,3. Hai lần phân chia vừa nêu được minh hoạ trong hình 1.



Hình 1


Hình 2

Lặp lại quá trình phân chia tam giác này đến lần thứ n ta nhận được tập Wn gồm 2n tam giác Tn,j , j = 0, 1, ..., 2n-1. Các tam giác trong tập Wn có thể phân thành các lớp đồng dạng như sau: Hai tam giác trong Wn thuộc cùng một lớp đồng dạng nếu chúng là đồng dạng với nhau.

Ví dụ: Nếu áp dụng quá trình phân chia trên đối với tam giác đều đến lần thứ ba, ta thu được ba lớp đồng dạng. Mỗi tam giác trong tập W3 sẽ đồng dạng với một trong ba tam giác được tô đậm trong hình 2.

Nhắc lại: trong tam giác ABC, gọi M là trung điểm của BC, ta có

2AM2 = AB2 + AC2 – BC2/2.

Yêu cầu: Hãy xác định số lớp đồng dạng của tập các tam giác thu được sau lần phân chia thứ n.

Dữ liệu: Vào từ file văn bản BISECTION.INP chứa bốn số nguyên a, b, c và n (2 ≤ n ≤ 300) được ghi cách nhau bởi dấu cách, theo thứ tự là độ dài của ba cạnh của tam giác và số lần thực hiện phép chia tam giác.

Kết quả: Ghi ra file văn bản BISECTION.OUT số lượng lớp đồng dạng của tập các tam giác thu được sau lần phân chia thứ n.
 
S

starlove_trainer

Bài 3. Phân tích chương trình Tên chương trình: ANALYS .PAS
Trong việc phân tích chương trình, cần phát hiện xem đoạn mã nguồn của chương trình có chứa các câu lệnh mà không khi nào được thực hiện hay không (những câu lệnh như vậy để ngắn gọn ta gọi là câu lệnh thừa). Sự có mặt của các câu lệnh thừa thường mách bảo là chương trình còn lỗi. Do đó trong chương trình dịch của tất cả các ngôn ngữ lập trình luôn có môđun kiểm tra sự có mặt của các câu lệnh thừa. Bạn cần viết chương trình thực hiện công việc của môđun này.

Dữ liệu: Vào từ file văn bản ANALYS.INP gồm không quá 30000 dòng chứa dãy thông báo là kết quả của việc phân tích ngữ nghĩa dãy câu lệnh trong mã nguồn của một chương trình cho trước. Mỗi dòng chứa thông báo về câu lệnh tương ứng trong chương trình cho biết chương trình sau khi thực hiện câu lệnh sẽ tiếp tục thực hiện câu lệnh nào và có một trong ba dạng sau:

· NEXT: thực hiện câu lệnh kế tiếp;

· GOTO n1 với n­1 là số nguyên dương: thực hiện câu lệnh với chỉ số n1 (các câu lệnh trong dãy lệnh được đánh số bắt đầu từ 1);

· JUMP n1 OR n2 với n­1 và n2 là các số nguyên dương: tùy thuộc điều kiện có thể chuyển đến thực hiện câu lệnh với chỉ số n1 hoặc câu lệnh với chỉ số n2.

Các chỉ số trong các thông báo được phân tách với các từ khoá (GOTO,JUMP,OR) bởi ít nhất một dấu cách. Chương trình bắt đầu thực hiện từ câu lệnh với chỉ số 1.

Kết quả: Ghi ra file văn bản ANALYS .OUT:

· Dòng đầu tiên ghi số nguyên k là số lượng câu lệnh thừa trong chương trình đã cho.

· Nếu k>0 thì mỗi dòng trong số k dòng tiếp theo chứa chỉ số của một câu lệnh thừa. Các chỉ số được đưa ra theo thứ tự tăng dần

test tham khảo tại http://vnoi.info/index.php?option=com_content&task=view&id=169&Itemid=70
 
S

starlove_trainer

Tên chương trình: GEN.PAS

Một số vi rút, ví dụ vi rút cúm gia cầm H5N1, có khả năng tái tổ hợp gien khi chúng thâm nhập vào cơ thể các động vật có vú. Để nghiên cứu vắc xin chống các loại vi rút này, trong phòng thí nghiệm người ta dùng enzim cắt gien thành từng đoạn ngắn. Từ đó, ta thu được một họ S các đoạn gien ngắn. Mỗi đoạn trong S được biểu diễn bởi một dãy chứa tối đa 3 trong số 4 loại thành phần A, G, T và C, và không có thành phần nào xuất hiện quá 3 lần trong cùng một đoạn. Ví dụ, kết quả cắt gien có thể là họ các đoạn gien ngắn sau đây:

(A, AA, AAA, A, G, T, AG, AT, AC, GT, GGGAAATTT).
Tiếp đến, người ta dùng một enzim khác kích hoạt để tạo ra các gien mới từ các đoạn gien trong S. Mỗi gien mới được tạo từ 3 đoạn ngắn không giống hệt nhau trong họ S và ba đoạn chỉ có thể nối được thành gien mới khi số lượng thành phần mỗi loại trong ba đoạn hoặc là như nhau, hoặc khác nhau từng đôi.

Ví dụ:

· Có thể ghép ba đoạn AGTT, AGGTT và AGGGTT, bởi vì số lượng thành phần A và số lượng thành phần T ở mỗi đoạn là như nhau, số lượng phần tử G khác nhau từng đôi một.

· Có thể ghép ba đoạn A, AA và AAA, bởi vì tuy chúng cùng chỉ chứa một thành phần A nhưng có số thành phần là khác nhau.

Như vậy, từ họ các đoạn gien S, theo qui tắc trên, người ta tạo ra được một số gien mới, trong đó có một số gien giống nhau và có thể còn một số đoạn không sử dụng.

Yêu cầu: Cho họ các đoạn gien S, hãy xác định cách tạo các gien mới sao cho số lượng đoạn không sử dụng là ít nhất.

Dữ liệu: Vào từ file văn bản GEN.INP:

· Dòng đầu tiên chứa số nguyên N (1≤ N ≤ 20000) là số lượng đoạn gien trong họ S;

· Mỗi dòng trong số N dòng tiếp theo mô tả một đoạn gien là một xâu gồm không quá 9 ký tự từ tập {A, G, T, C}.

Kết quả: Đưa ra file văn bản GEN.OUT:

Dòng đầu tiên chứa số nguyên M là số lượng đoạn gien không sử dụng,
M dòng sau: mỗi dòng chứa một xâu ký tự mô tả một đoạn gien không sử dụng

http://vnoi.info/index.php?option=com_content&task=view&id=168&Itemid=70
 
T

thienvamai

Bài 3. Phân tích chương trình Tên chương trình: ANALYS .PAS
Trong việc phân tích chương trình, cần phát hiện xem đoạn mã nguồn của chương trình có chứa các câu lệnh mà không khi nào được thực hiện hay không (những câu lệnh như vậy để ngắn gọn ta gọi là câu lệnh thừa). Sự có mặt của các câu lệnh thừa thường mách bảo là chương trình còn lỗi. Do đó trong chương trình dịch của tất cả các ngôn ngữ lập trình luôn có môđun kiểm tra sự có mặt của các câu lệnh thừa. Bạn cần viết chương trình thực hiện công việc của môđun này.

Dữ liệu: Vào từ file văn bản ANALYS.INP gồm không quá 30000 dòng chứa dãy thông báo là kết quả của việc phân tích ngữ nghĩa dãy câu lệnh trong mã nguồn của một chương trình cho trước. Mỗi dòng chứa thông báo về câu lệnh tương ứng trong chương trình cho biết chương trình sau khi thực hiện câu lệnh sẽ tiếp tục thực hiện câu lệnh nào và có một trong ba dạng sau:

· NEXT: thực hiện câu lệnh kế tiếp;

· GOTO n1 với n­1 là số nguyên dương: thực hiện câu lệnh với chỉ số n1 (các câu lệnh trong dãy lệnh được đánh số bắt đầu từ 1);

· JUMP n1 OR n2 với n­1 và n2 là các số nguyên dương: tùy thuộc điều kiện có thể chuyển đến thực hiện câu lệnh với chỉ số n1 hoặc câu lệnh với chỉ số n2.

Các chỉ số trong các thông báo được phân tách với các từ khoá (GOTO,JUMP,OR) bởi ít nhất một dấu cách. Chương trình bắt đầu thực hiện từ câu lệnh với chỉ số 1.

Kết quả: Ghi ra file văn bản ANALYS .OUT:

· Dòng đầu tiên ghi số nguyên k là số lượng câu lệnh thừa trong chương trình đã cho.

· Nếu k>0 thì mỗi dòng trong số k dòng tiếp theo chứa chỉ số của một câu lệnh thừa. Các chỉ số được đưa ra theo thứ tự tăng dần

test tham khảo tại http://vnoi.info/index.php?option=com_content&task=view&id=169&Itemid=70



Gọi đệ quy, dùng dfs thăm các câu lệnh, những câu không được thăm sẽ là câu thừa
 
M

megamanxza

Tên chương trình: GEN.PAS

Một số vi rút, ví dụ vi rút cúm gia cầm H5N1, có khả năng tái tổ hợp gien khi chúng thâm nhập vào cơ thể các động vật có vú. Để nghiên cứu vắc xin chống các loại vi rút này, trong phòng thí nghiệm người ta dùng enzim cắt gien thành từng đoạn ngắn. Từ đó, ta thu được một họ S các đoạn gien ngắn. Mỗi đoạn trong S được biểu diễn bởi một dãy chứa tối đa 3 trong số 4 loại thành phần A, G, T và C, và không có thành phần nào xuất hiện quá 3 lần trong cùng một đoạn. Ví dụ, kết quả cắt gien có thể là họ các đoạn gien ngắn sau đây:

(A, AA, AAA, A, G, T, AG, AT, AC, GT, GGGAAATTT).
Tiếp đến, người ta dùng một enzim khác kích hoạt để tạo ra các gien mới từ các đoạn gien trong S. Mỗi gien mới được tạo từ 3 đoạn ngắn không giống hệt nhau trong họ S và ba đoạn chỉ có thể nối được thành gien mới khi số lượng thành phần mỗi loại trong ba đoạn hoặc là như nhau, hoặc khác nhau từng đôi.

Ví dụ:

· Có thể ghép ba đoạn AGTT, AGGTT và AGGGTT, bởi vì số lượng thành phần A và số lượng thành phần T ở mỗi đoạn là như nhau, số lượng phần tử G khác nhau từng đôi một.

· Có thể ghép ba đoạn A, AA và AAA, bởi vì tuy chúng cùng chỉ chứa một thành phần A nhưng có số thành phần là khác nhau.

Như vậy, từ họ các đoạn gien S, theo qui tắc trên, người ta tạo ra được một số gien mới, trong đó có một số gien giống nhau và có thể còn một số đoạn không sử dụng.

Yêu cầu: Cho họ các đoạn gien S, hãy xác định cách tạo các gien mới sao cho số lượng đoạn không sử dụng là ít nhất.

Dữ liệu: Vào từ file văn bản GEN.INP:

· Dòng đầu tiên chứa số nguyên N (1≤ N ≤ 20000) là số lượng đoạn gien trong họ S;

· Mỗi dòng trong số N dòng tiếp theo mô tả một đoạn gien là một xâu gồm không quá 9 ký tự từ tập {A, G, T, C}.

Kết quả: Đưa ra file văn bản GEN.OUT:

Dòng đầu tiên chứa số nguyên M là số lượng đoạn gien không sử dụng,
M dòng sau: mỗi dòng chứa một xâu ký tự mô tả một đoạn gien không sử dụng

http://vnoi.info/index.php?option=com_content&task=view&id=168&Itemid=70

Đọc xong không hiểu gì hết! Ai pro giảng giùm mình đi!
 
Top Bottom