1. Trang chủ
  2. » Giáo Dục - Đào Tạo

de thi tin hoc thanh pho tam diep

2 22 1

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 2
Dung lượng 8,18 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Hãy xác định xem dãy đã cho có phải dãy tăng dần hay không, tính số cặp đôi xung khắc và tìm một cặp đôi lý tưởng nếu có trong dãy đã cho.[r]

Trang 1

Bài II(10 điểm): DÃY SỐ.

Cho số nguyên dương S và dãy số gồm N số nguyên dương F1, F2, , FN Dãy số đã cho được gọi là dãy tăng dần nếu: Fi Fi+1 i { 1,2, ,n −1 } ( hay F1 F2 F3 FN )

Chúng ta gọi hai số hạng Fi1 và Fi2 trong dãy đã cho (với i1 i2; i1,i2 { 1,2, ,n } ):

- Là một “cặp đôi xung khắc” nếu Fi1 + Fi2 = S.

- Là một “cặp đôi lý tưởng” nếu chúng cùng có ba chữ số, các chữ số của số hạng này giống hệt của số hạng kia nhưng khác

về thứ tự xuất hiện - ví dụ 123 và 132 hay 121 và 211 là các cặp đôi lý tưởng còn 121 và 122 hay 457 và 457 thì không phải

Yêu cầu: Cho biết S và dãy số F1, F2, , FN Hãy xác định xem dãy đã cho có phải dãy tăng dần hay không, tính số cặp đôi

xung khắc và tìm một cặp đôi lý tưởng (nếu có) trong dãy đã cho

Dữ liệu vào: Dữ liệu vào của bài toán được cho trong tệp tin DAYSO.INP với cấu trúc như sau:

- Dòng đầu tiên gồm hai số N và S (N 50000, S <1000)

- Dòng thứ i trong N dòng tiếp theo chứa một số là số Fi của dãy (Fi < 500)

Dữ liệu ra: Kết quả ghi ra trên màn hình (hoặc ghi ra file DAYSO.OUT)bốn dòng:

- Dòng đầu ghi ba số N, S và FN

- Dòng thứ hai ghi CO nếu dãy đã cho là dãy tăng dần, ghi KHONG nếu ngược lại

- Dòng thứ ba ghi một số là số cặp đôi xung khắc trong dãy đã cho

- Dòng thứ tư ghi hai số là một cặp đôi lý tưởng tìm được trong dãy đã cho, nếu không có cặp đôi lý tưởng nào thì ghi hai số 0

Ví dụ:

DAYSO.OUT)

5 5

1

2

3

4

5

5 5 5 CO 2

0 0

10 111

110

110

1

1

5

5

10

10

10

101

10 111 101 KHONG 7

110 101

Hạn chế kỹ thuật:

- Ghi tên file bài làm là DAYSO.PAS

- Dữ liệu vào là chính xác không cần kiểm tra.

- Có khoảng 30% số bộ test có thể nhập dữ liệu vào từ bàn phím.

- Có khoảng 60% số bộ test có N < 1000.

B i 2 - DAYSO.PAS}ài 2 - DAYSO.PAS}

uses crt;

const fi = 'dayso.inp';

max = 500;

var a:array[1 500] of word;

so:array[1 4,0 9,0 9] of boolean;

f:text; tangdan:boolean;

n,s,fn,socu:word; Tongxk:longint;

procedure nhap;

var i,k:word;

begin

fillchar(a,sizeof(a),0);

assign(f,fi);

reset(f);

socu:=0; tangdan:=true;

readln(f,n,s);

for i:= 1 to n do

if k<socu then tangdan:=false;

if k>100 then

Trang 2

so[k div 100,(k div 10)mod 10,k mod 10]:=true;

close(f);

end;

procedure demxungkhac;

var i:word;

begin

tongxk:=0;

for i:= 1 to ((s-1)div 2) do

tongxk:=tongxk+a[i]*a[s-i];

if not odd(s) then

begin

i:=s div 2;

tongxk:=tongxk+(a[i]*(a[i]-1) div 2);

end;

end;

procedure timlytuong;

var i,j,k:byte;

begin

for i:=1 to 4 do

for j:=0 to 9 do

for k:=0 to 0 do

if so[i,j,k] then

if (j<>k)and so[i,k,j] then

begin write(i,j,k,' ',i,k,j); exit; end;

if (k<>0)and(i<>k)and so[k,j,i] then begin write(i,j,k,' ',k,j,i); exit; end;

if (j<>0)and(i<>j)and so[j,i,k] then begin write(i,j,k,' ',j,i,k); exit; end;

if (k<>0)and((i<>j)or(i<>k)or(k<>j))and so[k,i,j] then begin write(i,j,k,' ',k,i,j); exit; end;

if (j<>0)and((i<>j)or(i<>k)or(k<>j))and so[j,k,i] then

begin write(i,j,k,' ',k,j,i); exit; end;

writeln(0,' ',0);

end;

procedure inkq;

begin

clrscr;

writeln(n,' ',s,' ',fn);

if tangdan then writeln('CO')

else writeln('KHONG');

demxungkhac;

writeln(tongxk);

timlytuong;

end;

begin

nhap;

inkq;

readln;

end

Ngày đăng: 28/09/2021, 13:05

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w