Bài 15: Thao tác với tệp

00

Một trò chơi dành cho nhiều đội chơi được Ban tổ chức quy định như sau: bắt đầu cuộc chơi, Ban tổ chức cho chạy N số trên màn hình từ trái sang phải và yêu cầu đội chơi nào trả lời nhanh nhất số cách chia dãy số trên thành nhiều dãy con nhất sao cho các dãy con có tổng bằng nhau.

Ví dụ: Trên màn hình chạy dòng 19 số: 1 0 2 0 0 3 1 1 1 0 2 1 0 0 2 1 2 0 1. Kết quả trả lời đúng là: tổng các số mỗi dãy con là 3, số dãy con nhiều nhất là 6, bao gồm các dãy con là: 1 0 2, 0 0 3, 1 1 1, 0 2 1, 0 0 2 1, 2 0 1

+Dữ liệu vào: File văn bản GAMESHOW.INP

- Dòng 1 chứa số nguyên dương N.

- Dòng 2 chứa N số chạy trên màn hình, các số cách nhau bởi dấu cách.

+ Dữ liệu ra: Ghi ra file văn bản GAMESHOW.OUT

- Dòng 1 là tổng các số của một dãy con.

- Dòng 2 là số K (số dãy con nhiều nhất chia được).

- Dòng 3 là các vị trí cuối cùng của từng dãy con, các số vị trí này cách nhau bởi dấu cách.

Ví dụ:

GAMESHOW.INP

GAMESHOW.OUT

19

1 0 2 0 0 3 1 1 1 0 2 1 0 0 2 1 2 0 1

3

6

3 6 9 12 16 19

NT
3 tháng 2 2020 lúc 22:17

const fi='gameshow.inp';
fo='gameshow.out';
var f1,f2:text;
a,b:array[1..100]of integer;
n,i,tg,d,s,x,j,vtd,vt:integer;
begin
assign(f1,fi); reset(f1);
assign(f2,fo); rewrite(f2);
readln(f1,n);
for i:=1 to n do
read(f1,a[i]);
{----------------------xu-ly------------------}
tg:=0;
for i:=1 to n do
tg:=tg+a[i];
for i:=n downto 1 do
if tg mod i=0 then
begin
d:=0;
s:=0;
x:=tg div i;
for j:=1 to n do
begin
s:=s+a[j];
if s=x then
begin
vt:=j;
inc(d);
b[d]:=vt;
s:=0;
end;
end;
if s=0 then
begin
b[d]:=n;
break;
end;
end;
writeln(f2,x);
writeln(f2,d);
for i:=1 to d do
write(f2,b[i],' ');
close(f1);
close(f2);
end.

Bình luận (0)
 Khách vãng lai đã xóa

Các câu hỏi tương tự
FG
Xem chi tiết
AD
Xem chi tiết
HC
Xem chi tiết
TN
Xem chi tiết
PH
Xem chi tiết
31
Xem chi tiết
NK
Xem chi tiết
NA
Xem chi tiết
LL
Xem chi tiết