Bài 1: Khái niệm về lập trình và ngôn ngữ lập trình

Trâm Lê

Bạn nào giải giúp mình bài này với!!

Cho một mảng N số nguyên dương, nhiệm vụ của bạn là đếm số lượng dãy con lien tiếp có tổng bằng X.Dữ liệu vào: File xsum1.inp gồm:

+ Dòng 1: ghi hai số nguyên N và X kích thước của dãy và tổng mục tiêu X.+ Dòng 2: Ghi N số nguyên a1,a2, … ,aN là các phần tử của dãy.

Dữ liệu ra: File xsum1.out gồm duy nhất một số là số lượng dãy con có tổng bằng x.Ràng buộc 

1≤ n ≤ 2 ⋅105

           1≤ x,a≤109

Ví dụ 

Xsum1.inp

Xsum1.out

5 72 4 1 2 7

3

 

Nguyễn Lê Phước Thịnh
20 tháng 2 2021 lúc 13:00

const fi='xsum1.inp'     

fo='xsum1.out'

var f1,f2:text;   

a:array[1..20000]of integer;   

i,n,j,x,dem,k,m,t:integer;

begin

assign(f1,fi); reset(f1);

assign(f2,fo); rewrite(f2);

readln(f1,n,x);

for i:=1 to n do 

read(f1,a[i]);

dem:=0;

for i:=1 to n do 

for j:=1 to n do   

begin       

for k:=1 to n do         

if (i<j) and (j<k) then               

begin                 

t:=0;                 

for m:=i to k do                   

t:=t+a[m];                 

if t=x then inc(dem);               

end;   

end;

for i:=1 to n do 

if x=a[i] then inc(dem);

writeln(f2,dem);

close(f1);

close(f2);

end.

Bình luận (0)
Nguyễn Thái Hưng
30 tháng 6 2021 lúc 11:55

program COST;

var n,m,s,dem:int64;a:

array[1..1000000] of int64;

i,j:longint;

begin 

readln(n,m);

for i := 1 to n do read(a[i]);

dem := 0;

for i := 1 to n do

begin

s := 0;

for j := i to n do 

begin 

s := s+a[j];

if s <= m then 

begin 

inc(dem);

continue;

end

else if a[j] > m then break;

end;

end;

write(dem);

end.    

Bình luận (0)

Các câu hỏi tương tự
Hải Nguyễn
Xem chi tiết
Nguyễn Huỳnh Mai Trân
Xem chi tiết
Lê Việt Hoàng
Xem chi tiết
Võ Bảo Bảo
Xem chi tiết
Nguyễn Chơn Nhân
Xem chi tiết
0o0 Nhok kawaii 0o0
Xem chi tiết
0o0 Nhok kawaii 0o0
Xem chi tiết
Sữa Chống Cay
Xem chi tiết
Nguyễn Khắc Tùng Lâm
Xem chi tiết