Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //количество подпоследовательностей, где сумма кратна 67
- ###
- var (sum,count,k):=(0,0,|0|*67);
- var f:=ReadAllText('').ToIs.Skip(1).ToA;
- for var i:=0 to f.Length-1 do begin
- sum+=f[i];
- if sum.D(67) then count+=1;
- count+=k[sum mod 67];
- k[sum mod 67]+=1;
- end;
- print(count);
- ----------------------------------------------------------------------------------------------------------------------------------
- ///подпоследовательность, где максимальная сумма и делится на 100
- ###
- var (sum,ms,k):=(0,0,|int64.MaxValue|*100);
- var f:=ReadAllText('').ToIs.Skip(1).ToA;
- for var i:=0 to f.Length-1 do begin
- sum+=f[i];
- if sum.D(100) then remax(ms,sum) else
- remax(ms,sum-k[sum mod 100]);
- k[sum mod 100]:=min(k[sum mod 100],sum);
- end;
- print(ms);
- ---------------------------------------------------------------------------------------------------------------------------------------###//Найдите среди них подпоследовательность с максимальной суммой, определите её длину
- ###
- var (sum,ms,ml):=(0,-10**20,0);
- var (m,l):=(|int64.MaxValue|*43,|0|*43);
- var f:=ReadAllText('C:\Users\danko\OneDrive\Рабочий стол\27-B.txt').ToIs.Skip(1).ToA;
- for var i:=0 to f.Length-1 do begin
- sum+=f[i];
- if (sum.d(43)) and (sum>ms) then (ms,ml):=(sum,i+1);
- var s1:=sum-m[sum mod 43];
- var l1:=(i+1)-l[sum mod 43];
- if (s1 > ms) or ((s1=ms) and (l1<ml)) then (ms,ml):=(s1,l1);
- if sum<m[sum mod 43] then (m[sum mod 43],l[sum mod 43]):=(sum,i+1);
- end;
- print(ml);
- ---------------------------------------------------------------------------------------------------------------------------------------
- ### //особые числа оканч на 4, колич кратно 7, а сумма всех кратна 25
- var (ms,s,k):=(-10000,0,0);
- var f:=ReadAllText('C:\Users\danko\OneDrive\Рабочий стол\27-B.txt').ToIs.Skip(1).ToA;
- var m:=MatrFill(25,7,10**20);
- for var i:=0 to f.Length-1 do begin
- s+=f[i];
- if (f[i]<0) and (abs(f[i]) mod 10=4) then k+=1;
- if s.D(25) and (k.D(7)) then remax(ms,s);
- remax(ms,int(s-m[s mod 25,k mod 7]));
- m[s mod 25,k mod 7]:=min(m[s mod 25,k mod 7],s);
- end;
- print(ms);
- --------------------------------------------------------------------------------------------------------------------------------------###
- var (sum,ms,count):=(0,0,0);
- var k:=|0|*20;
- var q:= new List<int>;
- assign(input,'C:\Users\danko\OneDrive\Рабочий стол\27-B.txt');
- var n:=ri;
- loop 9 do begin var x:=ri; sum+=x; q.Add(sum); end;
- loop n-9 do begin
- var x:=ri;
- sum+=x;
- if sum.D(20) then count+=1;
- count+=k[sum mod 20];
- end;
- k[q[0] mod 20]+=1;
- q.Remove(q[0]);
- q.Add(sum);
- print(count);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement