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 (111.07 KB, 3 trang )
<span class='text_page_counter'>(1)</span>SỞ GIÁO DỤC VÀ ĐÀO TẠO BÌNH ĐỊNH ĐỀ CHÍNH THỨC. KỲ THI CHỌN HỌC SINH GIỎI CẤP TỈNH LỚP 9 THCS KHÓA NGÀY 18-03-2014 Môn thi: Thời gian: Ngày thi:. TIN HỌC 150 phút (Không kể thời gian phát đề) 18/03/2014. ……………………………………….. Chú ý: -. Các file dữ liệu *.INP, *.OUT lưu trong thư mục \TINHOC9\. -. Bài làm của thí sinh lưu trong thư mục \TINHOC9\<SBD>\. Ví dụ: D:\TINHOC9\SBD01\. Bài 1. (6.0 điểm) :Tách số:. Ten file chương trình: Tachso.Pas. Viết chương trình tách số nguyên dương A (A<200) thành tổng của hai số nguyên dương x và y sao cho ước chung lớn nhất d của x và y là lớn nhất trong các cách phân tích có được. Yêu cầu: ● Dữ liệu vào: File text Tachso.INP chỉ có 1 dòng chứa số nguyên dương A. ● Dữ liệu ra: File text Tachso.OUT gồm 2 dòng: - Dòng 1: Ghi số nguyên dương A. - Dòng 2: Ghi ba số nguyên dương x, y, d; Các số cách nhau ít nhất một khoảng trắng. Ví dụ: Tachso.INP 95. Program Bai1; Uses Crt; Const fi='tachso.inp'; fo='tachso.out'; Var n,i,s,max:Integer; f:text; Function Uc(x,y:Integer):Integer; Begin While x<>y do If x>y then x:=x-y. Tachso.OUT 95 19 76 1 9. Else y:=y-x; Uc:=x; End; Begin { Clrscr;} Assign(f,fi); Reset(f); Readln(f,n); Assign(f,fo); Rewrite(f); Writeln(f,n); max:=1;. For i:= 2 to n div 2 do If Uc(i,n-i)>max then Begin s:=i; max:=Uc(i,n-i); End; If max>1 then Writeln(f,s,' ',n-s,' ',Uc(s,n-s)) Else Writeln(f,1,' ',n,' ',1); Close(f); End..
<span class='text_page_counter'>(2)</span> Bài 2. (7.0 điểm) Khai triển Cantor. Tên file chương trình: Cantor.PAS. Khai triển Cantor của số tự nhiên N là biểu diễn số N dưới dạng: N= ak.k! + ak-1.(k-1)! + … + a2.2! + a1.1! Trong đó: 0 ≤ ak ≤ k và k!= 1.2.3…(k-1).k Viết chương trình liệt kê các hệ số ak, ak-1,…, a3, a2, a1 trong khai triển Cantor của số tự nhiên N (N<50000) . Các hệ số cách nhau ít nhất một khoảng trắng. Yêu cầu: ● Dữ liệu vào: File text Cantor.INP chỉ có 1 dòng chứa số nguyên dương N. ● Dữ liệu ra: File text Cantor.OUT gồm 2 dòng: - Dòng 1: Ghi số nguyên dương N. - Dòng 2: Liệt kê các hệ số a k, ak-1,…, a3, a2, a1 trong khai triển Cantor của số tự nhiên N. Các hệ số cách nhau ít nhất một khoảng trắng. Ví dụ: Cantor.INP 2014. Program Bai2; Uses Crt; Const fi='Cantor.inp'; fo='Cantor.out'; Var n,k,s:Word; f:text; Function gt(n:Byte):Word; Var i:Byte; p:Word; Begin p:=1; For i:=2 to n do p:=p*i;. Cantor.OUT 2014 2 4 3 3 2 0. gt:=p; End; Begin Assign(f,fi); Reset(f); Readln(f,n); Assign(f,fo); Rewrite(f); Writeln(f,n); k:=1; While gt(k)<n do k:=k+1; k:=k-1;. Repeat s:=k; While gt(k)*s>n do s:=s-1; Write(f,s,' '); n:=n-gt(k)*s; k:=k-1; Until n=0; If k>0 then For s:=1 to k do Write(f,0,' '); Close(f); End..
<span class='text_page_counter'>(3)</span> Bài 3. (7.0 điểm) Bi đổi màu:. Tên file chương trình: bidoimau.PAS. Trên bàn có ba loại bi màu đỏ, xanh, vàng với số lượng lần lượt là: x, y, z (x, y, z < 400). Mỗi khi cho hai viên bi khác màu chạm vào nhau thì chúng sẽ đổi sang màu còn lại. Viết chương trình trình bày quy trình chạm bi sao cho sau khi thực hiện thì trên bàn chỉ còn một màu bi nào đó. Nếu không xử lý được thì xuất ra thông báo “Khong thuc hien duoc”. Yêu cầu: ● Dữ liệu vào: File text Bidoimau.INP chỉ có 1 dòng chứa 3 số nguyên dương x, y, z lần lượt là số bi đỏ, xanh, vàng có trên bàn. Các số cách nhau ít nhất một khoảng trắng ● Dữ liệu ra: File text Bidoimau.OUT gồm một trông hai trường hợp: Trường hợp 1 (Nếu bài toán giải được): Gồm nhiều dòng, mỗi dòng gồm 3 số tự nhiên là số lượng của từng loại bi sau một bước va chạm . Trường hợp 2 (Nếu bài toán không giải được): Đưa ra câu không báo “Khong thuc hien duoc” Ví dụ 1: Bidoimau.INP 234. Bidoimau.OUT Khong thuc hien duoc. Ví du 2: Bidoimau.INP 341. Program Bai3; Uses crt; Const fi='Bidoimau.inp'; fo='Bidoimau.out'; Var d,x,v:integer; f:text; Begin Assign(f,fi); Reset(f); Readln(f,d,x,v);. Bidoimau.OUT 341 530 422 611 800. Assign(f,fo); x:=x+2-3*((3*x)div(3*x-1)); Rewrite(f); v:=v+2-3*((3*v)div(3*v-1)); If ((x-v)mod 3 =0) and writeln(f,d,' ',x,' ',v); ((d+x)*(d+v)<>0) then End; Begin End Writeln(f,d,' ',x,' ',v); Else Writeln(f,'Khong thuc hien While (x+v)<>0 do duoc !'); Begin Close(f); d:=d- End. 1+3*((3*x*v)div(3*x*v-1)); Hết.
<span class='text_page_counter'>(4)</span>