Professional Documents
Culture Documents
var m:longint;f:text;
{------ chuong trinh con kiem tra so nguyen to ----}
function ngto(n:longint):boolean;
var i:longint;
begin
if n=2 then ngto:=false else ngto:=true;
for i:=2 to trunc(sqrt(n)) do if n mod i = 0 then
begin
ngto:=false;
break; {thoat vong lap}
end;
end;
{--- het CT con------}
{----Than chuong trinh chinh ------}
begin
{----Doc file ----}
assign(f,'nguyento.inp'); reset(f);
readln(f,m);close(f);
{----Mo file de ghi----}
assign(f,'nguyento.out'); rewrite(f);
MẬT KHẨU.
Cu Tí thường xuyên tham gia thi lập trình trên mạng. Vì đạt được thành tích cao nên
Tí được gửi tặng một phần mềm diệt virus. Nhà sản xuất phần mềm cung cấp cho Tí một mã
số là một dãy gồm các bộ ba chữ số ngăn cách nhau bởi dấu chấm và có chiều dài không quá
255 (kể cả chữ số và dấu chấm). Để cài đặt được phần mềm, Tí phải nhập vào mật khẩu của
phần mềm. Mật khẩu là một số nguyên dương M được tạo ra bằng cách tính tổng giá trị các
bộ ba chữ số trong dãy mã số, các bộ ba này được đọc từ phải sang trái.
- Yêu cầu: Cho biết mã số của phần mềm, hãy tìm mật khẩu của phần mềm đó.
- Dữ liệu vào: Cho từ tệp văn bản có tên BL2.INPgồm một dòng chứa xâu ký tự S (độ
dài xâu không quá 255 ký tự) là mã số của phần mềm.
- Kết quả: Ghi ra tệp văn bản có tên BL2.OUTgồm một số nguyên là mật khẩu tìm
được.
ProgramBL2;
Constfin ='BL2.INP';
fout='BL2.OUT';
VarS:String;
i,Sum,T:Longint;
f:Text;
Begin
Assign(f,fin);
Reset(f);
Read(f,S);
Close(f);
Sum:=0;
T:=0;
Fori:=Length(S) downto1 do
Begin
Sum:=Sum+T;
T:=0;
End;
Sum:=Sum+T;
Assign(f,fout);
ReWrite(f);
Write(f,Sum);
Close(f);
End.
var s:string;
len,sum,i:longint;
begin
readln(s);
len:=length(s);
sum:=0;
sum:=sum+((ord(s[i-2])-48)*100+(ord(s[i-1])-48)*10+(ord(s[i])-48));
writeln(sum);
end.
Trong đó, readln(s) đọc dòng dữ liệu vào cho biến s. length(s) trả về độ dài của chuỗi s.
ord(s[i]) trả về mã ASCII của ký tự tại vị trí i trong chuỗi s. Sử dụng ord(s[i])-48 để chuyển
từ ký tự sang số. Rồi cộng dồn tổng giá trị các bộ ba chữ số trong mã số để tìm được mật
khẩu. Cuối cùng, sử dụng writeln(sum) để xuất mật khẩu.
Regenerate response
Bài II:
Tìm số đảo ngược Y của một số X, biết Y gồm các chữ số của X và viết theo thứ tự ngược
lại.
Bài I: Các câu 1,2,3 có thể dùng chương trình sau:
program bai1;
uses crt;
var n:bignum;
Function tccs(n:bignum):integer;
var i,s:integer;
begin
s:=0;
end;
Function sls0(n:bignum):integer;
var i,dem:integer;
begin
dem:=0;
sls0:=dem;
end;
begin
clrscr;
readln
end.
Còn 2 câu 4,5 kia thì chỉ cần tạo 2 cái Function nữa là xong, 1 Function tìm
số lớn nhất, 1 Function đếm số lượng số nhỏ nhất. Cái này bạn tự suy nghĩ
nha .
Bài II:
program bai2;
uses crt;
type bignum=string;
var n:bignum;
i:integer;
begin
clrscr;
write('nhap X: ');
readln(n);
write(n[i]);
readln
end.
- Yêu cầu: Hãy cắt cuộn giấy thành nhiều đoạn nhất sao cho tổng các số được
- Dữ liệu vào: Cho từ tệp văn bản có tên BL3.INPcó dạng như sau:
Dòng thứ hai ghi N số nguyên theo thứ tự là các số được viết trên cuộn giấy, các số
nguyên cách nhau ít nhất một dấu cách.
- Kết quả: Ghi ra tệp văn bản có tên BL3.OUTgồm một dòng ghi một số nguyên là số
đoạn nhiều nhất có thể chia được.
Ví dụ:
BL3.OUT
BL3.INP
8 3
10 2 6 2 5 2 1 2
Giải thích:
+ Đoạn 1: 10
+ Đoạn 2: 2 + 6 + 2 =10
+ Đoạn 3: 5 + 2 + 1 + 2 = 10
Chương trình tham khảo:
ProgramBL3;
Constfin ='BL3.INP';
fout='BL3.OUT';
Vara:array[1..1000] ofLongint;
N,K,i,S,tong:Longint;
f:Text;
Begin
Assign(f,fin);
Reset(f);
Readln(f,N);
Close(f);
S:=0;
ForK:=N downto1 do
Begin
tong:=0;
Fori:=1 ton do
Begin
tong:=tong+a[i];
Iftong=S divK thentong:=0;
End;
Iftong=0 thenBreak;
End;
Assign(f,fout);
ReWrite(f);
Write(f,K);
Close(f);
End.
KHOẢNG CÁCH
Trong soạn thảo văn bản, theo quy ước giữa các từ chỉ nên cách nhau bằng một
khoảng cách. Tuy nhiên trên thực tế vẫn có những trường hợp ngoại lệ.
- Yêu cầu: Cho trước một xâu ký tự S chỉ gồm các chữ cái và các khoảng cách. Hãy
cho biết có nhiều nhất bao nhiêu khoảng cách đi liền nhau trong xâu S.
- Dữ liệu vào: Cho từ tệp văn bản có tên BL3.INPgồm một dòng ghi xâu S (độ dài xâu
không quá 250 ký tự).
- Kết quả: Ghi ra tệp văn bản có tên BL3.OUTgồm một số nguyên duy nhất là số
khoảng cách nhiều nhất đi liền nhau.
Program BL3;
fout='BL3.OUT';
Var S:String;
i,d,max:Integer;
f:Text;
Begin
Assign(f,fin);
Reset(f);
Read(f,S);
Close(f);
max:=0;
d:=0;
S:=S+'a';
Else
Begin
d:=0;
End;
Assign(f,fout);
ReWrite(f);
Write(f,max);
Close(f);
End.
DÃY TĂNG
Một dãy số a1, a2, …, anđược gọi là dãy tăng nếu như nó thỏa điều kiện: a1< a2< …
< an
- Yêu cầu: Cho dãy số nguyên a1, a2, …, an. Hãy cho biết dãy số này có phải là dãy
tăng hay không? Nếu không phải dãy tăng thì hãy cho biết chỉ số k nhỏ nhất của phần tử
làm cho dãy không có tính chất của dãy tăng.
- Dữ liệu vào: Cho từ tệp văn bản có tên BL4.INPcó dạng như sau:
Dòng thứ hai ghi dãy n số nguyên a1, a2, …, an(-1000 ≤ ai≤ 1000, i=1..n)
- Kết quả: Ghi ra tệp văn bản có tên BL4.OUTgồm một số nguyên duy nhất k.
Program BL4;
fout='BL4.OUT';
n,i:Longint;
f:Text;
Begin
Assign(f,fin);
Reset(f);
Readln(f,n);
For i:=1 to n do Read(f,a[i]);
Close(f);
i:=1;
Assign(f,fout);
ReWrite(f);
Else Write(f,0);
Close(f);
End.
var n, i, a: integer;
flag: boolean;
begin
flag := true;
readln(n);
readln(a);
for i := 2 to n do
begin
readln(a);
begin
flag := false;
write(i);
break;
end;
end;
end.
Explanation:
Khởi tạo biến k = 0, nếu k = 0 sau khi duyệt mảng a, tức là dãy là dãy tăng.
We declare variables n, i, a, and flag to store the number of elements in the array, loop
counter, current element and flag to check if the array is increasing or not.
We read the first element of the array a[1] from the input.
Regenerate response
NHỮNG SỐ NGUYÊN TỐ
Bạn Nam vừa được học về các số nguyên tố và bạn ấy rất thích vì những tính chất đặc
biệt của nó. Ngay cả trong giờ ra chơi, bạn Nam vẫn ở lại lớp và lấy giấy ra để tìm thêm
những số nguyên tố mới. Tuy nhiên, những người bạn tinh nghịch khi thấy Nam tìm ra được
một số nguyên tố thì thay đổi số đó bằng cách lấy viết ghi thêm vào sau số đó một hoặc nhiều
chữ số nữa, có lần cũng không viết thêm gì cả.
- Yêu cầu: Hãy cho biết những số nguyên tố nào có thể là số mà bạn Nam
- Kết quả ra:Xuất ra màn hình những số nguyên tố có thể là số mà bạn Nam tìm được
lúc đầu.
Ví dụ :
3079
307
ProgramBL1;
Varn,i:Longint;
Begin
Readln(n);
Begin
i:=2;
Ifi>sqrt(n) thenWriteln(n);
n:=n div10;
End;
Readln;
End.
XÂU CON ĐỐI XỨNG
Một xâu ký tự gọi là đối xứng nếu viết các ký tự của xâu theo thứ tự ngược lại thì tạo
thành xâu mới giống như xâu ban đầu.
- Yêu cầu: Cho xâu ký tự S chỉ gồm các chữ cái in thường. Hãy cho biết có bao nhiêu
xâu con có nhiều hơn 1 ký tự của xâu S là đối xứng. Xâu con của xâu S là một dãy ký tự
liên tiếp trong xâu S.
- Dữ liệu vào: Cho từ tệp văn bản có tên BL2.INPgồm một dòng chứa xâu ký tự S (độ
dài xâu không quá 250 ký tự).
- Kết quả:Ghi ra tệp văn bản có tên BL2.OUTgồm một số tự nhiên là số xâu con đối
xứng của xâu S.
ProgramBL2;
Constfin ='BL2.INP';
fout='BL2.OUT';
VarS:String;
i,j,k,dem:Longint;
f:Text;
Begin
Assign(f,fin);
Reset(f);
Read(f,S);
Close(f);
dem:=0;
Fori:=1 toLength(S)-1 do
Forj:=i+1 toLength(S) do
Begin
k:=(j-i-1) div2;
Ifk<0 thendem:=dem+1;
End;
Assign(f,fout);
ReWrite(f);
Write(f,dem);
Close(f);
End.
Algorithm:
var
S: string;
begin
readln(S);
length := length(S);
count := 0;
for i := 1 to length do
if checkPalindrome(S, i, j) then
inc(count);
end;
end;
writeln(count);
end;
var
i: integer;
begin
for i := l to (l + r) div 2 do
checkPalindrome := false;
exit;
end;
checkPalindrome := true;
end;
Để giải bài toán này, ta có thể sử dụng một vòng lặp để duyệt tất cả các xâu con của xâu S
và kiểm tra xem xâu con đó có phải là xâu đối xứng hay không. Nếu xâu con đó là xâu đối
xứng, ta tăng biến đếm số xâu con đối xứng lên 1.
Ví dụ, với xâu S = "abbaa", ta có các xâu con sau: "a", "b", "bb", "b", "a", "ab", "bb", "ba",
"aaa". Trong đó, chỉ có "bb" và "aaa" là xâu đối xứng.
var
S: string;
begin
count := 0;
readln(S);
len := length(S);
for i := 1 to len do
inc(count);
end;
writeln(count);
end.
XẾP HÀNG HÓA
Tại một bến cảng, các công nhân đang bốc dỡ các kiện hàng từ tàu biển lên các xe container.
Các kiện hàng phải được bốc dỡ lần lượt từ kiện hàng thứ nhất đến kiện hàng cuối cùng. Mỗi
kiện hàng khi bốc lên phải được đặt ngay vào xe container đang chờ sẵn để vận chuyển đi, xe
này đầy thì đến lượt xe kế tiếp. Mỗi xe container chỉ có thể chở hàng hóa có tải trọng không
quá M.
Yêu cầu:Hãy cho biết cần ít nhất bao nhiêu chuyến xe để vận chuyển hết
Dữ liệu vào:Cho từ tệp văn bản có tên BL3.INPcó dạng như sau:
- Dòng đầu tiên ghi hai số nguyên nvà M(1≤n≤10000, 1≤M≤10000000) tương ứng là số kiện
hàng trên tàu và tải trọng tối đa của xe container.
- Dòng thứ hai ghi n số nguyên a1, a2, ..., an(1≤ai≤M) trong đó ai tương ứng là trọng lượng
của kiện hàng thứ i (i=1..n).
Kết quả: Ghi ra tệp văn bản có tên BL3.OUTgồm một dòng ghi một số nguyên là số chuyến
xe ít nhất. Các số trên cùng một dòng ghi cách nhau ít nhất một dấu cách.
Chương trình tham khảo
ProgramBL3;
Constfin ='BL3.INP';
fout='BL3.OUT';
Vara:Array[1..1000] ofLongint;
n,M,i,S,dem:Longint;
f:Text;
Begin
Assign(f,fin);
Reset(f);
Readln(f,n,m);
Fori:=1 to n do Read(f,a[i]);
Close(f);
dem:=1;
S:=0;
Fori:=1 ton do
Else
Begin
dem:=dem+1;
S:=a[i];
End;
Assign(f,fout);
ReWrite(f);
Write(f,dem);
Close(f);
End.
BÀI 1.(7 điểm) GIA CÔNG SẢN PHẦM
Một cơ sở sản xuất hàng thủ công mỹ nghệ vừa nhận được một đơn đặt hàng
gia công nsản phẩm. Với số lượng đặt hàng lớn như vậy, cơ sở đã huy động hết
toàn bộ công nhân bắt tay vào làm ngay. Tuy nhiên đây lại là một sản phẩm mới
nên ngày đầu tiên cơ sở chỉ làm ra được ksản phẩm. Sang ngày thứ hai, các
công nhân đã thành thạo hơn nên số sản phẩm làm ra được nhiều gấp đôi ngày
thứ nhất. Và cứ như vậy, năng suất của ngày hôm sau lại cao gấp đôi ngày hôm
trước.
Yêu cầu:Hãy cho biết cơ sở cần bao nhiêu ngày để hoàn thành hết nsản
phẩm?
Kết quả ra:Xuất ra màn hình số ngày hoàn thành các sản phẩm theo đơn đặt
hàng.
Ví dụ :
Giải thích:
- Ngày thứ nhất làm 2 sản phẩm (còn lại 9 sản phẩm).
- Ngày thứ hai làm 4 sản phẩm (tổng cộng là 6, còn lại 5 sản phẩm).
- Ngày thứ ba có thể làm được 8 sản phẩm nhưng chỉ làm 5 sản phẩm còn lại.
Bạn Nam rất yêu thích lập trình, nhất là khi gặp những bài toán khó thì bạn ấy
càng cố gắng để giải cho xong. Có một lần, trong lúc suy nghĩ về một bài toán,
tay bạn ấy lại gõ ngẫu nhiên các phím trên bàn phím, đến khi nhìn lại thì trên
màn hình đã là một dãy ký tự. Kỳ lạ thay, mặc dù là gõ ngẫu nhiên không nhìn
bàn phím nhưng có những lúc bạn ấy chỉ toàn gõ vào các phím số.
Yêu cầu:Cho xâu ký tự S là dãy các ký tự mà bạn Nam đã gõ vào, hãy cho
biết bạn Nam đã gõ liên tiếp các phím số nhiều nhất là bao nhiêu lần?
Dữ liệu vào:Cho từ tệp văn bản có tên BL2.INPgồm một dòng chứa xâu ký
- Dòng đầu ghi số lần nhiều nhất mà bạn Nam gõ liên tiếp các phím số.
- Nếu có ký tự số được gõ vào thì dòng thứ hai ghi dãy các số mà bạn nam gõ
liên tiếp nhiều nhất đó. Nếu có nhiều dãy cùng có số lần gõ nhiều nhất như nhau
Ví dụ:
BL2.INP BL2.OUT
azp572gkxt8906dqsh13dj 4
8906
Trong kỳ thi hội khỏe phù đổng cấp huyện vừa qua có n vận động viên tham
gia chạy ngắn, các vận động viên được đánh số báo danh từ 1 đến n. Kết quả
chạy tiếp sức trong kỳ thi hội khỏe phù đổng cấp tỉnh, ban huấn luyện muốn
chọn ra 4 vận động viên chạy nhanh nhất trong số n vận động viên này.
Yêu cầu:Hãy cho biết số báo danh của 4 vận động viên được chọn. Biết rằng
Dữ liệu vào:Cho từ tệp văn bản có tên BL3.INPcó dạng như sau:
≤ 30000, i=1..n)
Kết quả:Ghi ra tệp văn bản có tên BL3.OUTgồm một dòng ghi 4 số nguyên
tương ứng là 4 số báo danh của 4 vận động viên được chọn (không cần ghi theo
thứ tự).
Các số trên cùng một dòng ghi cách nhau ít nhất một dấu cách.
Ví dụ:
BL3.INP BL3.OUT
13000
9800
10200
11500
10060
12050
11200
2357
Lưu ý: Thí sinh không được sử dụng tài liệu. Giám thị không giải thích gì thêm.
a. Thuật toán:
Dùng cấu trúc lặp tăng dần để đếm số ngày
ProgramBL1;
Varn,k,S,dem:Longint;
Begin
Readln(n);
Write('So san pham san xuat trong ngay dau tien = ');
Readln(k);
S:=0;
dem:=0;
WhileS<n do
Begin
dem:=dem+1;
S:=S+k;
k:=k*2;
End;
Readln;
End.
c. Bộ TEST:
k = 20
1 1,0
2 n = 300
k = 299
2 1,0
3 n = 250
k = 250
1 1,0
4 n = 5000
k=1
13 1,0
5 n = 15700
k=5
12 1,0
6 n = 50000
k=2
15 1,0
7 n = 100000
k=3
16 1,0
ProgramBL2;
Constfin = 'BL2.INP';
fout= 'BL2.OUT';
VarS:String;
i,max,dem,vitri:Integer;
f:Text;
Begin
Assign(f,fin);
Reset(f);
Read(f,S);
Close(f);
max:=0;
dem:=0;
Fori:=1 toLength(S) do
Begin
dem:=dem+1;
Ifdem>max then
Begin
max:=dem;
vitri:=i;
End;
End
Elsedem:=0;
Assign(f,fout);
ReWrite(f);
Writeln(f,max);
Write(f,Copy(S,vitri-max+1,max));
Close(f);
End.
c. Bộ TEST:
sjdh25jsh00491sadjh2763smdajk 5
00491
0,5
0,5
3
sjdh;';7634re57834dfg57346gfh738947fkjash
3987ueirtjkdf,./l834782342907jshjlhk
12
834782342907
0,5
0,5
nb3478jdf348jgfh9038fgj348975dkj0-347dfg
83475jkfjk89-\=-aksdjh347jh000000000jksh
000000000
0,5
0,5
07304657018963457627456 23
07304657018963457627456
0,5
0,5
hjhdf346576347895hjfgsdasdjklh8930247508
3740fghjdfhgjkdhfjk5389034750834750-812
ajkgjksdf12389374508723489057346587413
67jhjk32762637ghsdgfsd7826789623457862
3478gsdgfhjsdggduyrtpy76789165789165018
6jhkjlasdggfhjasdgy576157645gfsgdfhlsgadfl
3478gwdhjsdhsa
31
123893745087234890573465874
1367
0,5
0,5
a. Thuật toán:
Sắp xếp dãy t theo thứ tự tăng dần và chọn 4 phần tử đầu. Lưu ý khi sắp xếp lưu
Constfin = 'BL31.INP';
fout= 'BL31.OUT';
Vart,sbd:Array[1..1000] ofInteger;
n,i,j,tam:Integer;
f:Text;
Begin
Assign(f,fin);
Reset(f);
Readln(f,n);
Close(f);
Fori:=1 to4 do
Forj:=i+1 ton do
Ift[i]>t[j] then
Begin
tam:=t[i];
t[i]:=t[j];
t[j]:=tam;
tam:=sbd[i];
sbd[i]:=sbd[j];
sbd[j]:=tam;
End;
Assign(f,fout);
ReWrite(f);
Close(f);
End.
c. Bộ TEST:Các dữ liệu nhập xem trong file BL3.INP
1 BL31.INP 7 10 12 14 1,0
2 BL32.INP 16 33 66 97 1,0
---Hết---
Tôn sư trọng đạo là một truyền thống văn hoá vô cùng tốt đẹp của dân tộc ta.
Để tỏ lòng tri ân đến quý thầy cô nhân ngày nhà giáo Việt Nam, các bạn học sinh lớp
9A dự định sẽ mua những cành hoa hồng đẹp nhất để tặng cho tất cả thầy cô trong
toàn trường. Theo tìm hiểu của bạn lớp trưởng thì nhà trường có nthầy cô giáo, do đó
các bạn cần mua ncành hoa hồng.
Tại cửa hàng bán hoa, giá của mỗi cành hoa hồng là mđồng. Tuy nhiên, cửa
hàng có chính sách giảm giá nếu khách hàng mua từ acành hoa hồng trở lên thì giá
Yêu cầu:Hãy tính tổng số tiền mà các bạn lớp 9A cần có để mua đủ số cành
Dữ liệu vào:Nhập từ bàn phím các giá trị n, m, a(n, m, a là các số nguyên,
1≤n≤100, 1000≤m≤10000, 5≤a≤50). Giả thiết dữ liệu được nhập đúng, không cần
kiểm tra.
Kết quả ra:Xuất ra màn hình số tiền cần có. Kết quả làm tròn đến phần
nguyên.
Ví dụ 1:
Ví dụ 2:
Giải thích: giá mỗi hoa là 1000 đồng, nhưng mua số lượng nhiều hơn 10 hoa
được giảm 25% nên giá mỗi hoa giảm còn 750 đồng
Trang 2/7
Trong ngày Tết Trung thu, nhà thiếu nhi đã tổ chức rước đèn trung thu cho các
em thiếu thi. Tất cả các em đều hào hứng tham gia các trò chơi của ban tổ chức. Để
động viên tinh thần các em, ban tổ chức sẽ chấm điểm ở các trò chơi để xếp hạng và
phát quà. Tuy nhiên vì là ngày vui, ban tổ chức muốn tất cả các em đều nhận được
Cách phát quà của ban tổ chức như sau: em xếp hạng cuối cùng sẽ được 1 gói
quà, em xếp hạng kế trên em cuối cùng được 4 gói quà,…Nói chung, em xếp hạng
cao sẽ có số gói quà nhiều hơn bạn xếp hạng liền sau mình 3 gói quà. Biết rằng có n
em tham gia rước đèn trung thu và khi tổng kết điểm thì không có hai em nào có cùng
số điểm.
Yêu cầu:Hãy cho biết ban tổ chức cần chuẩn bị bao nhiêu gói quà để phát
trong đêm Trung thu nếu số lượng em thiếu nhi tham gia đã được biết trước?
Dữ liệu vào:Nhập từ bàn phím số nguyên dương n là số em thiếu nhi tham gia
Kết quả ra:Xuất ra màn hình số gói quà mà ban tổ chức cần chuẩn bị.
Ví dụ:
Giải thích: Số quà từng em nhận được lần lượt là: 1, 4, 7, 10, 13
Dọc theo con đường tơ lụa, những con lạc đà cần mẫn chuyên chở tơ lụa,
hương liệu và ngọc ngà đá quý của Phương Đông. Đá quý được phân thành 26 loại
ký hiệu bằng chữ cái la tinh thường từ a đến z. Các lái buôn muốn bán được hàng với
giá càng cao càng tốt. Trong chuyến đi này một lái buôn mang theo bộ đá quý gồm n
viên (1 ≤ n≤ 250). Ông xâu tất cả thành chuỗi và bày ra trên thảm trước một lãnh
chúa hùng mạnh. Vị lãnh chúa cân nhắc đánh giá chất lượng bộ đá quý để quyết định
có nên mua hay không. Theo quy tắc truyền thống của địa phương, giá trị của chuỗi
ngọc phụ thuộc vào sự xuất hiện các cặp ngọc (ai
, bi
đi
trước loại bi(i= 1..k, 1 ≤ k≤ 676). Nếu giá trị chuỗi ngọc đủ lớn, lãnh chúa sẽ mua
Yêu cầu:Cho biết số viên ngọc n, xâu Sthể hiện các loại ngọc trong chuỗi và
cách định giá trị chuỗi ngọc của địa phương. Hãy xác định giá trị của chuỗi ngọc.
Dữ liệu vào:Cho từ tệp văn bản có tên BL3.INPcó dạng như sau:
- Tiếp theo là k dòng, mỗi dòng chứa hai ký tự xác định cặp giá trị.
Kết quả:Ghi ra tệp văn bản có tên BL3.OUTgồm một số nguyên duy nhất là
Trang 3/7
Ví dụ:
BL3.INP BL3.OUT
73
abacaba
ab
ac
bb
Giải thích:
- Dòng thứ ba là cách thứ nhất xác định cặp giá trị: ngọc loại a đứng trước ngọc
- Dòng thứ tư là cách thứ hai xác định cặp giá trị: ngọc loại a đứng trước ngọc
- Dòng thứ năm là cách thứ ba xác định cặp giá trị: ngọc loại b đứng trước
Tranh thủ trong giờ ra chơi, hai bạn Nam và Bình rủ nhau chơi trò tìm số. Hai
bạn lần lượt mỗi người viết một số nguyên lên bảng, Nam viết số thứ nhất, Bình viết
số thứ hai, rồi đến lượt Nam viết số thứ ba,… Cứ tiếp tục như vậy hai bạn viết được
một dãy gồm nsố a1, a2, …, an. Đến đây hai bạn chưa kịp chơi trò chơi của mình thì
đã đến giờ học. Thầy vào lớp, sẳn thấy dãy số trên bảng, thầy đã đặt ra câu đố: Tìm
một đoạn liên tiếp các số trong dãy số trên sao cho tổng giá trị các số trong đoạn đó là
lớn nhất. Vì dãy số có quá nhiều số nên cả lớp nhìn hoa cả mắt mà vẫn chưa tìm ra
được đáp án. Bạn hãy lập trình giải giúp các bạn trong lớp nhé.
Dữ liệu vào:Cho từ tệp văn bản có tên BL4.INPcó dạng như sau:
≤ 1000, i=1..n)
Kết quả:Ghi ra tệp văn bản có tên BL4.OUTgồm một số nguyên duy nhất là
tổng lớn nhất của một đoạn liên tiếp các số trong dãy.
Ví dụ:
BL4.INP BL4.OUT
10
2 -9 4 1 -3 5 8-7 3 1
15
Chữ ký của giám thị 1: ...................... Chữ ký của giám thị 2: ............................
Lưu ý: Thí sinh không được sử dụng tài liệu. Giám thị không giải thích gì thêm.
abacaba
abacaba
a b a c a b a
Trang 4/7
a. Thuật toán:
Kiểm tra nếu số hoa cần mua nhỏ hơn số hoa tối thiểu để được giảm giá thì số tiền =
số hoa * đơn giá; ngược lại thì số tiền = số hoa * đơn giá * 0.75
ProgramBL1;
Varn,m,a:Longint;
Begin
Readln(n);
Readln(m);
Ifn<a then
Else
Readln;
End.
c. Bộ TEST:
1 n = 20
m = 5000
a = 30
100000 1,0
2 n = 25
m = 1200
a = 50
30000 1,0
3 n = 15
m = 1800
a=5
20250 1,0
4 n = 27
m = 1200
a = 27
24300 1,0
5 n = 100
m = 10000
a = 30
750000 1,0
Trang 5/7
a. Thuật toán:
Đây là bài toán tính tổng n phần tử đầu tiên của cấp số cộng có công sai d=3. Cũng
ProgramBL2;
Varn,i,a,S:Longint;
Begin
Readln(n);
S:=1; a:=1;
Fori:=2 ton do
Begin
a:=a+3;
S:=S+a;
End;
Readln;
End.
c. Bộ TEST:
1 10 145 1,0
a. Thuật toán:
Với mỗi cặp vị trí i và j (i<j) trong xâu chuỗi, ta kiểm tra xem cặp ký tự Si, S
có nằm
trong số k cặp giá trị hay không. Để giảm thời gian kiểm tra, ta dùng một mảng hai chiều
Constfin ='BL3.INP';
fout='BL3.OUT';
VarA:Array['a'..'z','a'..'z'] ofInteger;
S:String;
c1,c2:Char;
n,k,i,j,d:Longint;
f:Text;
Begin
Assign(f,fin);
Reset(f);
Readln(f,n,k);
Readln(f,S);
Trang 6/7
Fori:=1 tok do
Begin
Readln(f,c1,c2);
A[c1,c2]:=1;
End;
Close(f);
n:=Length(S);
d:=0;
Fori:=1 ton-1 do
Assign(f,fout);
ReWrite(f);
Write(f,d);
Close(f);
End.
c. Bộ TEST:Các dữ liệu nhập xem trong file BL31.INP
1 BL31.INP 13 1,0
2 BL32.INP 52 1,0
a. Thuật toán:
Mỗi đoạn con được xác định bởi vị trí phần tử bắt đầu đoạn và vị trí phần tử cuối
đoạn. Với mỗi đoạn con, ta tính tổng các phần tử của đoạn rồi so sánh chọn ra tổng lớn nhất.
Khi đó ta có ai+ ai+1+ … + aj= Sj– Si-1(ở đây ta khởi tạo S0=0)
Constfin ='BL4.INP';
fout='BL4.OUT';
VarS:Array[0..1000] ofLongint;
n,x,i,j,max:Longint;
f:Text;
Begin
Assign(f,fin);
Reset(f);
Readln(f,n);
S[0]:=0;
Fori:=1 ton do
Begin
Read(f,x);
S[i]:=S[i-1] + x;
End;
Close(f);
Trang 7/7
max:=S[1];
Fori:=1 ton do
Forj:=i ton do
ReWrite(f);
Write(f,max);
Close(f);
End.
c. Bộ TEST:Các dữ liệu nhập xem trong file
1 BL41.INP 9 1,0
---Hết---
Thời gian làm bài: 150 phút (Không kể thời gian giao đề)
Ví dụ:
Dữ liệu ra
Dữ liệu vào
Nhap BH: 2 AB = 2.83
Nhap CH: 2
Viết chương trình cho phép nhập một dãy gồm n số nguyên (Số n và các
phần tử của dãy được nhập từ bàn phím). Thực hiện:
c. Dãy đan dấu là dãy có tính chất: không có hai phần tử cạnh nhau có
dấu giống nhau. Cho biết dãy vừa nhập (không chứa phần tử 0) có đan
dấu không?
Ví dụ:
Dữ liệu ra
Dữ liệu vào
Nhap so phan tu: 4 Gia tri lon nhat: 3
Viết chương trình cho phép nhập số nguyên dương N rồi thực hiện:
Ví dụ:
Dữ liệu ra
Dữ liệu vào
Nhap so N: 10 Cac uoc cua N la: 1; 2; 5; 10
So M la: 6
Nhap so N: 30 Cac uoc cua N la: 1; 2; 3; 5; 6; 10; 15;
30
So M là: 24
Nhap so N: 0 Nhap so N: (Yêu cầu nhập lại số N)
Ví dụ:
Dữ liệu ra
Dữ liệu vào
Nhap N: 388247 So lo hong la: 5
Nhap N: 0 So lo hong la: 1
Nhap N: 123 So lo hong la: 0
==HẾT==