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

TL

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

 

NT
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)
NH
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ự
HN
Xem chi tiết
NT
Xem chi tiết
LH
Xem chi tiết
VB
Xem chi tiết
NN
Xem chi tiết
00
Xem chi tiết
00
Xem chi tiết
SC
Xem chi tiết
NL
Xem chi tiết