Đề Chọn HSG Tin 11 – Thanh Chương – Nghệ An 1819
Đề Chọn HSG Tin 11 – Thanh Chương – Nghệ An 1819
Tổng quan bài thi
Tên bài | File chương trình | File dữ liệu vào | File kết quả | Điểm | Thời gian | |
Bài 1 | MÃ HÓA | mahoa.* | mahoa.inp | mahoa.out | 6 | 0.5s |
Bài 2 | XÂU | xau.* | xau.inp | xau.out | 5 | 0.5s |
Bài 3 | XOAY SỐ | xoayso.* | xoayso.inp | xoayso.out | 5 | 0.5s |
Bài 4 | BCNN | bscnn.* | bscnn.inp | bscnn.out | 4 | 0.5s |
Bài 1: MÃ HÓA
Các số từ 1 đến 9 được mã hoá dưới dạng các từ chỉ chứa các kí tự a, b và c như sau:
Chữ số | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
Mã | a | b | cc | bbc | cbc | abc | bac | aac | cac |
Cho một xâu (có độ dài không quá 100) chỉ chứa các kí tự a, b, c.
Yêu cầu: Cho biết số nguyên tương ứng của xâu nếu mã hoá được, nếu không được ghi ra số 0
Dữ liệu: vào từ File MAHOA.INP là một xâu(có độ dài không quá 100)
Kết quả: Xuất ra File MAHOA.OUT số nguyên tương ứng của xâu nếu mã hoá được, nếu không được ghi ra số 0
Ví dụ:
MAHOA.INP | MAHOA.OUT | MAHOA.INP | MAHOA.OUT |
abacc | 1213 | accbc | 0 |
Bài 2. XÂU
Một xâu gồm các số chính phương được viết thành một hàng ngang vô tận 14916253649…Cho số N (1<= N<= 255), tìm xem vị trí thứ N trong xâu là số nào?
Dữ liệu vào: Từ File văn bản XAU.INP gồm số nguyên N duy nhất
Dữ liệu ra: Ghi vào File văn bản XAU.OUT một số nguyên duy nhất là số ở vị trí N trong xâu.
Ví dụ:
XAU.INP | XAU.OUT |
9 | 6 |
Bài 3 XOAY SỐ
Cho một số X (số chữ số của X <=14). Ta gọi số đó là một số xoay khi xoay số X một góc 180 thì ta vẫn được số X. Ví dụ: 11, 69, 96 là những số xoay.
Yêu cầu: Khi cho một số K, hãy tìm xem với những số có K chữ số thì có bao nhiêu số xoay và đó là những số nào?
Dữ liệu: vào từ File XOAYSO.INP chỉ ghi duy nhất một số nguyên dương K(1<=K<=14).
Kết quả: Xuất ra File XOAYSO.OUT mỗi dòng ghi một số thoả mãn.
Ví dụ:
XOAYSO.INP | XOAYSO.OUT |
2 | 11
69 88 96 |
Bài 4 BỘI SÔ CHUNG NHỎ NHẤT
Cho trước số tự nhiên N (1< N <100)
Xét tất cả các phân tích N thành tổng các số tự nhiên
N = a1 + a2 +… +ak (1)
Tìm giá trị lớn nhất của BSCNN (a1,a2,, …, ak) trên tập các bộ số (a1,a2,…, ak) thoả mãn đẳng thức (1).
Dữ liệu vào: từ file văn bản BSCNN.INP: là 1 số N
Kết quả: Ghi ra file văn bản BSCNN.OUT, bao gồm 2 dòng, dòng thứ nhất ghi giá trị số Max tìm được. Dòng thứ hai ghi n bộ số a1,a2,, …, ak tương ứng, các số cách nhau bằng dấu cách.
Ví dụ.
BSCNN.INP | BSCNN.OUT |
22 | 420
4 5 6 7 |
Code tham khảo Đề HSG Tin 11 – Thanh Trương – Nghệ An 1819
Bài 1:
Const finp='MAHOA.INP'; fout='MAHOA.OUT'; st:array[1..9] of string=('a','b','cc','bbc','cbc','abc','bac','aac','cac'); Var fi,fo:text; l,tr,kq:array[1..100] of integer; tt,i,j,k,dem,n,x:integer; s,s1:string; ok:boolean; Procedure Open_file; begin Assign(fi,finp); reset(fi); Assign(fo,fout); Rewrite(fo); end; Procedure Close_file; begin Close(fi); Close(fo); end; Procedure Enter; begin readln(fi,s); end; Procedure Solve; begin l[0] :=1; for j:=1 to length(s) do begin ok:=false; for i:=1 to 9 do begin tt:=length(st[i] ); if j>=tt then begin s1:=copy(s,j-tt+1,tt); if st[i] =s1 then begin l[j] :=i; tr[j] :=j-tt; ok:=true; break; end; end; end; end; end; Procedure Print; begin n:=length(s); x:=n; dem:=0; repeat inc(dem); kq[dem] :=l[x] ; if kq[dem] =0 then begin write(fo,0); exit; end; x:=tr[x] ; if x=0 then break; until false; for j:=dem downto 1 do write(fo,kq[j] ); end; Begin Open_file; Enter; Solve; Print; Close_file; End.
Bài 2:
Const Finp ='xau.inp'; Fout ='xau.out'; Limit =300; Var fi,fo :Text; St :string; n :Integer; Procedure Openfile; Begin Assign(fi,finp); Reset(fi); Assign(fo,fout); Rewrite(fo); End; Procedure CloseFile; Begin Close(fi); Close(fo); End; procedure Readinp; Begin Readln(fi,n); End; Procedure Init; Var i:Integer; s:string; Begin St:=''; i:=1; Repeat str(i*i,s); st:=st+s; inc(i); if Length(st)>=255 then Break; until False; ENd; Procedure Solve; Var i,j:Integer; BEgin Writeln(fo,st[n] ); End; Begin OpenFile; Readinp; Init; Solve; CloseFile; End.
Bài 3:
program XOAYSO ; const fi = 'XOAYSO.INP' ; fo = 'XOAYSO.OUT' ; n_g : array [ 1..5 ] of byte = ( 0 , 1 , 6 , 8 , 9 ) ; nguoc : array [ 1..5 ] of byte = ( 0 , 1 , 9 , 8 , 6 ) ; that : array [ 1..3 ] of byte = ( 0 , 1 , 8 ) ; var a : array [ 1..20 ] of integer ; count , n : longint ; kt : array [ 0..9 , 1..20 ] of boolean ; f : text ; procedure DOC; begin assign ( f , fi ) ; reset ( f ) ; readln ( f , n ) ; close ( f ) ; count := 0 ; fillchar ( kt , sizeof ( kt ) , true ) ; kt [ 0 , 1 ] := false ; end ; procedure XUAT ; var i , j : integer ; begin if odd ( n ) then begin for i := 1 to 3 do begin inc ( count ) ; a [ n div 2 + 1 ] := that [ i ] ; for j := 1 to n do write ( f , a [ j ] ) ; writeln ( f ) ; end ; end else begin inc ( count ) ; for j := 1 to n do write ( f , a [ j ] ) ; writeln ( f ) ; end ; end ; procedure THU ( i : integer ) ; var j : integer ; begin for j := 1 to 5 do if kt [ n_g [ j ] , i ] then begin a [ i ] := n_g [ j ] ; a [ n + 1 - i ] := nguoc [ j ] ; if i = n div 2 then xuat else THU ( i + 1 ) ; end ; end ; procedure XULY ; begin assign ( f , fo ) ; rewrite ( f ) ; THU( 1 ) ; close ( f ) ; end ; BEGIN DOC; XULY ; END. 4
Bài 4:
Program BCSNN; uses crt; const fi='BSCNN.INP'; fo='BSCNN.OUT'; maxn=100; var a: array[1..maxn,1..maxn] of longint; b: array[1..maxn,1..maxn] of byte; n : integer; f: text; procedure DOC; begin assign(f,fi); reset(f); readln(f,n); close(f); end; function TIM(x,y: longint):longint; var tg,i,j: longint; begin i:=x; j:=y; while i mod j <>0 do begin tg:=j; j := i mod j; i:=tg; end; TIM:=(x*y)div j; end; procedure XULY; var i,j ,t: integer; tg: longint; begin for i:=1 to n do begin a[i,1] :=i; b[i,1] :=i; end; for j:=2 to n-1 do for i:=j+1 to n do begin a[i,j] :=0; for t:=1 to i-j+1 do begin tg:=TIM(a[i-t,j-1] ,t); if a[i,j] <tg then begin a[i,j] :=tg; b[i,j] :=t; end; end; end; end; procedure GHI; var i,j: integer; begin assign(f,fo); rewrite(f); j:=n; for i:=1 to n-1 do if a[n,n] < a[n,i] then begin a[n,n] :=a[n,i] ; j:=i; end; writeln(f,a[n,n] ); i:=n; while j>0 do begin write(f,b[i,j] ,' '); i:=i-b[i,j] ; j:=j-1; end; close(f); end; BEGIN DOC; XULY; GHI; END.