ĐỀ THI THỬ SỐ 3
Bài 1. (5 điểm) Viết chương trình in ra dãy số nhị phân có n chữ số (n<=10).
+ N là số nguyên dương
+ Số N là số lượng kí số nhị phân được in ra.
Bài tốn liệt kê các dãy nhị phân độ dài n là bài toán cổ điển dùng để minh họa
cho phương pháp sinh và thuật tốn quay lui. Trong bài này, mình sẽ viết về
thuật toán sinh các dãy nhị phân độ dài n hay nói cách khác là liệt kê các dãy nhị
phân có độ dài n bằng phương pháp sinh.
Yêu cầu: Viết chương trình in ra các chuỗi nhị phân có độ dài n. (chuỗi nhị phân
có độ dài n là chuỗi số có số chữ số bằng n và các chữ số trong chuỗi chỉ gồm 0
và 1.)
Input: Độ dài của chuỗi nhị phân cần in ra
Output: In ra tất cả chuỗi nhị phân có độ dài ở đầu vào.
Ví dụ:
Input: 3
Out put: 000 001 010 011 100 101 110 111
Bài 2. (7 điểm) Dãy số 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:
·
Dịng đầu tiên ghi số nguyên n(1·
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 màn hình một số nguyên duy nhất k. Trường hợp dãy đã cho là
dãy tăng thì ghi số 1.
Bài 3 (8 điểm) Phần thưởng (PT.PAS)
Trong cuộc thi giải toán qua mạng internet mỗi học sinh đều có số
điểm tích lũy riêng của mình. Số điểm tích lũy của mỗi học sinh là một số
nguyên dương K (0 < K ≤ 2×109). Đội tuyển của trường THCS Tài Năng có N học
sinh tham gia dự thi (2 ≤ N ≤ 100). Tại buổi gặp mặt trước kỳ thi cấp tỉnh, thầy
hiệu trưởng quyết định thưởng cho các học sinh trong đội tuyển Q triệu đồng,
biết rằng điểm tích lũy của mỗi học sinh đều chia hết cho Q.
Yêu cầu: Hãy tìm số nguyên dương Q lớn nhất.
Dữ liệu vào:
- Dòng 1: Ghi số nguyên dương N là số lượng học sinh.
- Dòng 2: Ghi N số nguyên dương lần lượt là điểm tích lũy của N học sinh, các số
được ghi cách nhau ít nhất một dấu cách.
Dữ liệu ra: Ghi ra màn hình như sau:
- Dịng 1: Ghi số ngun dương Q tìm được.
Ví dụ:
Input
output
5
3
15 24 45 36 27
HƯỚNG DẪN ĐỀ THI THỬ SỐ 3
Bai 1.
program tim_DNP;
const
nmax=9;
type
data = byte;
var
n:data;
DNP: array [1..nmax]of data;
procedure xuat;
var
i:data;
begin
for i:=1 to n do
write (DNP[i]);
writeln;
end;
procedure In_DNP(i:data);
var
j:data;
begin
if i>n then
xuat
else
for j:=0 to 1 do
begin
DNP[i]:=j;
In_DNP(i+1);
end;
end;
begin
writeln ('nhap do dai DNP');
readln(n);
In_DNP(1);
readln
end.
Bài 2.
Program day_tang;
uses crt;
Var A: Array [0..1000] of Longint;
n,i:Longint;
Begin
clrscr;
write ('nhap so n = ');readln(n);
For i:=1 To n Do
Begin
Write('Phan tu A[',i,']= '); Readln(a[i]);
End;
For i:=1 To n Do Write(a[i],' ');
writeln;
i:=1;
While (i<=n-1) and (a[i]
If i<=n-1 then Write(i+1)
Else Write(0);
readln
End.
Bài 3
Code 1
Program Phan_thuong;
Type mang=Array[0..101] of Longint;
Var N,i,ucln,usc,sodu,x,y:Longint;
TS:mang;
begin
writeln ('nhap so thi sinh'); readln(n);
for i:=1 to n do
begin
write('nhap diem tich luy cho thi sinh TS[',i,']');readln(TS[i]);
end;
for i:=1 to n do
begin
writeln (TS[i]);
end;
{tim USCLN}
sodu:=x mod y;
While sodu<>0 do
Begin
x:=y;
y:=sodu;
sodu:=x mod y;
End;
UCLN:=y;
{tim USC}
USC:=UCLN(TS[1],TS[2]);
for i:= 3 to N do
begin
USC:=UCLN(USC,A[i]);
USC:=USC;
End;
Readln
End.
Code 2
program phanthuong1;
var uoc,i,n: longint;
a: array[1..100] of longint;
function uc(a,b: longint): longint;
var r: longint;
begin
r:=a mod b;
while r<>0 do
begin
a:=b;
b:=r;
r:=a mod b;
end;
uc:=b;
end;
begin
write('Nhap so hoc sinh ');
readln(n);
while (n<2) or (n>10) do
begin
write('Nhap la n: ');
readln(n);
end;
for i:=1 to n do
begin
write('Phan tu thu ',i,' la: ');
readln(a[i]);
while (a[i]<0) or (a[i]>1000000000) do
begin
write('Nhap lai diem tich luy cua hoc sinh thu ',i,': ');
readln(a[i]);
end;
end;
uoc:=0;
for i:=1 to n do
uoc:=uc(a[1],a[2]);
uoc:=uc(uoc,a[i]);
write('Uoc chung lon nhat cua day la: ',uoc);
readln
end.