Đề và ĐÁp Án Thi HSG Pascal Lớp 11
Chia sẻ bởi Trần Quang Diệu |
Ngày 26/04/2019 |
43
Chia sẻ tài liệu: Đề và ĐÁp Án Thi HSG Pascal Lớp 11 thuộc Tin học 11
Nội dung tài liệu:
Câu 1: TÍNH TỔNG
Trên một màn hình lớn, người ta lần lượt cho hiện ra các số của một dãy gồm N số nguyên không âm a1, a2, …, aN và cứ lặp đi lặp lại như thế. Mỗi người theo dõi màn hình được đề nghị tính tổng của K số nguyên liên tiếp xuất hiện trên màn hình bắt đầu từ số nguyên thứ B.
Viết chương trình giúp cho những người theo dõi màn hình tính được tổng như đề nghị.
Dữ liệu vào: chứa trong tệp văn bản SUM.INP gồm hai dòng
+ Dòng đầu tiên ghi ba số nguyên N, K và B, 1 ( N (100, 1 ( K (100, 1 ( B ( 109.
+ Dòng thứ hai chứa dãy số nguyên không âm a1, a2, …, aN.
Dữ liệu ra: ghi vào tệp văn bản SUM.OUT gồm một dòng chứa tổng cần tính.
Ví dụ:
SUM.INP SUM.OUT
5 7 154 24
1 2 3 4 5
Chương trình tham khảo:
PROGRAM Tinh_Tong;
CONST fi=’SUM.INP’; fo=’SUM.OUT’;
VAR N, K, B, i : longint;
S : longint;
a : array[0..100] of longint;
f: text;
PROCEDURE DocFile;
Var f: text; i: integer;
Begin
Assign(f, fi);
Reset(f);
Readln(f, N, K, B);
For i:=0 to N do Read(f, a[i]);
Close(f)
End;
BEGIN
Assign(f, fo);
Rewrite(f);
DocFile;
S := 0;
For i := B to B+K-1 do S := S + a[(i-1) mod N];
Write(f, S);
Close(f);
END.
Câu 2: ĐẲNG THỨC
Cho một đẳng thức sai có dạng A=S (với A, S là hai số nguyên không âm). Viết chương trình tìm cách thêm vào giữa các chữ số của số nguyên A một số phép cộng để nhận được một đẳng thức đúng, sao cho số phép cộng thêm vào là ít nhất có thể được.
Dữ liệu vào: chứa trong tệp văn bản EQ.INP gồm một dòng là đẳng thức sai A = S.
Dữ liệu ra: ghi vào tệp văn bản EQ.OUT gồm một dòng chứa đẳng thức đúng sau khi đã thêm vào các phép cộng.
Ví dụ:
EQ.INP
143175=120
EQ.OUT
14+31+75=120
EQ.INP
5025=30
EQ.OUT
5+025=30
Chương trình tham khảo:
PROGRAM Dang_Thuc;
CONST fi=’EQ.INP’; fo=’EQ.OUT’;
inf = 1000000000;
VAR n, S : longint;
i, j : longint;
ch : char;
KQ: String;
A : array[1..1000] of longint;
B : array[1..1000] of longint;
memo : array[1..1000,0..5000] of longint;
PROCEDURE KhoiTao;
Var f: text;
Begin
Assign(f, fi);
Reset(f);
n:=0;
Read(f, ch);
Repeat
Inc(n);
A[n]:= Ord(ch) – 48;
Read(f, ch);
Until ch=’=’;
Readln(f, S);
Close(f);
B[n] := n;
For i := n-1 downto 1 do
if A[i] = 0 then B[i] := B[i+1] else B[i] := i;
For i := 1 to n do
For j := 0 to S do
memo[i,j] := -1;
KQ:=’’;
End;
PROCEDURE GhiFile;
Var f: text;
Begin
Assign(f, fo);
Rewrite(f);
Write(f, KQ);
Close(f);
End;
FUNCTION Opt( i, sum : longint ) : longint;
Var j, broj : longint;
Begin
if i > n then begin
if sum = 0 then opt := 0 else opt := inf;
end
else begin
if memo[i,sum] = -1 then
Trên một màn hình lớn, người ta lần lượt cho hiện ra các số của một dãy gồm N số nguyên không âm a1, a2, …, aN và cứ lặp đi lặp lại như thế. Mỗi người theo dõi màn hình được đề nghị tính tổng của K số nguyên liên tiếp xuất hiện trên màn hình bắt đầu từ số nguyên thứ B.
Viết chương trình giúp cho những người theo dõi màn hình tính được tổng như đề nghị.
Dữ liệu vào: chứa trong tệp văn bản SUM.INP gồm hai dòng
+ Dòng đầu tiên ghi ba số nguyên N, K và B, 1 ( N (100, 1 ( K (100, 1 ( B ( 109.
+ Dòng thứ hai chứa dãy số nguyên không âm a1, a2, …, aN.
Dữ liệu ra: ghi vào tệp văn bản SUM.OUT gồm một dòng chứa tổng cần tính.
Ví dụ:
SUM.INP SUM.OUT
5 7 154 24
1 2 3 4 5
Chương trình tham khảo:
PROGRAM Tinh_Tong;
CONST fi=’SUM.INP’; fo=’SUM.OUT’;
VAR N, K, B, i : longint;
S : longint;
a : array[0..100] of longint;
f: text;
PROCEDURE DocFile;
Var f: text; i: integer;
Begin
Assign(f, fi);
Reset(f);
Readln(f, N, K, B);
For i:=0 to N do Read(f, a[i]);
Close(f)
End;
BEGIN
Assign(f, fo);
Rewrite(f);
DocFile;
S := 0;
For i := B to B+K-1 do S := S + a[(i-1) mod N];
Write(f, S);
Close(f);
END.
Câu 2: ĐẲNG THỨC
Cho một đẳng thức sai có dạng A=S (với A, S là hai số nguyên không âm). Viết chương trình tìm cách thêm vào giữa các chữ số của số nguyên A một số phép cộng để nhận được một đẳng thức đúng, sao cho số phép cộng thêm vào là ít nhất có thể được.
Dữ liệu vào: chứa trong tệp văn bản EQ.INP gồm một dòng là đẳng thức sai A = S.
Dữ liệu ra: ghi vào tệp văn bản EQ.OUT gồm một dòng chứa đẳng thức đúng sau khi đã thêm vào các phép cộng.
Ví dụ:
EQ.INP
143175=120
EQ.OUT
14+31+75=120
EQ.INP
5025=30
EQ.OUT
5+025=30
Chương trình tham khảo:
PROGRAM Dang_Thuc;
CONST fi=’EQ.INP’; fo=’EQ.OUT’;
inf = 1000000000;
VAR n, S : longint;
i, j : longint;
ch : char;
KQ: String;
A : array[1..1000] of longint;
B : array[1..1000] of longint;
memo : array[1..1000,0..5000] of longint;
PROCEDURE KhoiTao;
Var f: text;
Begin
Assign(f, fi);
Reset(f);
n:=0;
Read(f, ch);
Repeat
Inc(n);
A[n]:= Ord(ch) – 48;
Read(f, ch);
Until ch=’=’;
Readln(f, S);
Close(f);
B[n] := n;
For i := n-1 downto 1 do
if A[i] = 0 then B[i] := B[i+1] else B[i] := i;
For i := 1 to n do
For j := 0 to S do
memo[i,j] := -1;
KQ:=’’;
End;
PROCEDURE GhiFile;
Var f: text;
Begin
Assign(f, fo);
Rewrite(f);
Write(f, KQ);
Close(f);
End;
FUNCTION Opt( i, sum : longint ) : longint;
Var j, broj : longint;
Begin
if i > n then begin
if sum = 0 then opt := 0 else opt := inf;
end
else begin
if memo[i,sum] = -1 then
* 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ẻ: Trần Quang Diệu
Dung lượng: |
Lượt tài: 0
Loại file:
Nguồn : Chưa rõ
(Tài liệu chưa được thẩm định)