Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Необходимо выбрать из каждой пары ровно одно число так,
- //чтобы сумма всех выбранных чисел не делилась на 3 и при этом была максимально возможной
- ###
- ReadLines('C:\Users\danko\OneDrive\Рабочий стол\27-B_demo.txt').Skip(1).Sel(s->s.ToIs).
- Agr(|0|,(a,b)->a.Cart(b,(x,y)->x+y).GrBy(x->x mod 3).Sel(s->s.Max).ToA).Wh(x->x mod 3>0).Max.Pr;
- //если просят выбрать два числа, то в Cart закидываем Cmb(2).Sel(p->p.Sum)
- //по методу мчс каждый раз фильтруем
- ------------------------------------------------------------------------------------------------------------------------
- //подпоследовательность, где есть максимальная сумма, которая делится на 89
- ###
- var (sum,maxl,s1):=(0,0,0);
- var csum:=|int64(10**20)|*89;
- var s:=ReadAllText('C:\Users\danko\OneDrive\Рабочий стол\27_A.txt').ToIs.Skip(1).ToA;
- for var i:=1 to s.Length -1 do begin
- sum+=s[i];
- if sum.D(89) then maxl:=max(maxl,sum) else begin
- s1:=sum - csum[sum mod 89];
- maxl:=max(maxl,s1);
- end;
- csum[sum mod 89]:=min(csum[sum mod 89],sum);
- end;
- print(maxl);
- -------------------------------------------------------------------------------------------------------------------------
- //количество пар, где произведение кратно 15
- ###
- var f:=ReadAllText('C:\Users\danko\OneDrive\Рабочий стол\27-B_demo.txt').ToIs.Skip(1).ToA;
- var (count,k,k15):=(0,0,0);
- var (k3,k5):=(0,0);
- for var i:=0 to f.Length-1 do begin
- if f[i].D(15) then count+=k else
- if f[i].D(5) then count+=k3 else
- if f[i].D(3) then count+=k15 else
- count+=k15;
- k+=1;
- if f[i].D(3) then k3+=1;
- if f[i].D(5) then k5+=1;
- if f[i].D(15) then k15+=1;
- end;
- print(count);
- ----------------------------------------------------------------------------------------------------------------------------
- //количество пар, где сумма кратна 127
- ###
- var f:=ReadAllText('C:\Users\danko\OneDrive\Рабочий стол\27-B_demo.txt').ToIs.Skip(1).ToA;
- var (ost,count):=(0,0);
- var k:=|0|*127;
- for var i:=0 to f.Length-1 do begin
- if f[i].D(127) then ost:=0 else ost:=127-(f[i] mod 127);
- count+=k[ost];
- k[f[i] mod 127]+=1;
- end;
- print(count);
- -------------------------------------------------------------------------------------------------------------------------------
- //максимальная сумма пары, которая кратна 107
- ###
- var f:=ReadAllText('C:\Users\danko\OneDrive\Рабочий стол\27-B_demo.txt').ToIs.Skip(1).ToA;
- var (ost,maxs):=(0,0);
- var k:=|-1000|*107;
- for var i:=0 to f.Length-1 do begin
- if f[i].D(107) then ost:=0 else ost:=107-(f[i] mod 107);
- remax(maxs,f[i]+k[ost]);
- remax(k[f[i] mod 107],f[i]);
- end;
- print(maxs);
- -----------------------------------------------------------------------------------------------------------------------------------
- //Минимальная сумма пары, где одно из чисел кратно 17
- ###
- var f:=ReadAllText('C:\Users\danko\OneDrive\Рабочий стол\27-B_demo.txt').ToIs.Skip(1).ToA;
- var (m,min17,sum):=(10000,10000,10000);
- for var i:=0 to f.Length-1 do begin
- if f[i].D(17) then sum:=min(sum,f[i]+m) else sum:=min(sum,f[i]+min17);
- m:=min(m,f[i]);
- if f[i].D(17) then min17:=min(min17,f[i]);
- end;
- print(sum);
- ---------------------------------------------------------------------------------------------------------------------------------------
- ///Задачи на пары с расстоянием
- ###
- var q:= new List<int>;
- var (m,count,x):=(7,0,0);
- var k:=|0|*999;
- assign(input,'C:\Users\danko\OneDrive\Рабочий стол\26.txt');
- var n:=ri;
- loop m do q.Add(ri);
- loop n-m do begin
- x:=ri;
- count+=k[abs(x) mod 999];
- k[q[0] mod 999]+=1;
- q.Append(x);
- q.Remove(0);
- end;
- print(count);
Add Comment
Please, Sign In to add comment