Advertisement
C3EQUALZ

27 задание подпоследовательности

Jun 15th, 2022 (edited)
238
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 2.80 KB | None | 0 0
  1. //количество подпоследовательностей, где сумма кратна 67
  2. ###
  3. var (sum,count,k):=(0,0,|0|*67);
  4. var f:=ReadAllText('').ToIs.Skip(1).ToA;
  5. for var i:=0 to f.Length-1 do begin
  6.   sum+=f[i];
  7.   if sum.D(67) then count+=1;
  8.   count+=k[sum mod 67];
  9.   k[sum mod 67]+=1;
  10.   end;
  11. print(count);
  12. ----------------------------------------------------------------------------------------------------------------------------------
  13. ///подпоследовательность, где максимальная сумма и делится на 100
  14. ###
  15. var (sum,ms,k):=(0,0,|int64.MaxValue|*100);
  16. var f:=ReadAllText('').ToIs.Skip(1).ToA;
  17. for var i:=0 to f.Length-1 do begin
  18.   sum+=f[i];
  19.   if sum.D(100) then remax(ms,sum) else
  20.     remax(ms,sum-k[sum mod 100]);
  21.   k[sum mod 100]:=min(k[sum mod 100],sum);
  22.   end;
  23. print(ms);
  24. ---------------------------------------------------------------------------------------------------------------------------------------###//Найдите среди них подпоследовательность с максимальной суммой, определите её длину
  25. ###
  26. var (sum,ms,ml):=(0,-10**20,0);
  27. var (m,l):=(|int64.MaxValue|*43,|0|*43);
  28. var f:=ReadAllText('C:\Users\danko\OneDrive\Рабочий стол\27-B.txt').ToIs.Skip(1).ToA;
  29. for var i:=0 to f.Length-1 do begin
  30.   sum+=f[i];
  31.   if (sum.d(43)) and (sum>ms) then (ms,ml):=(sum,i+1);
  32.   var s1:=sum-m[sum mod 43];
  33.   var l1:=(i+1)-l[sum mod 43];
  34.   if (s1 > ms) or ((s1=ms) and (l1<ml)) then (ms,ml):=(s1,l1);
  35.   if sum<m[sum mod 43] then (m[sum mod 43],l[sum mod 43]):=(sum,i+1);
  36.   end;
  37.   print(ml);
  38. ---------------------------------------------------------------------------------------------------------------------------------------
  39. ### //особые числа оканч на 4, колич кратно 7, а сумма всех кратна 25
  40. var (ms,s,k):=(-10000,0,0);
  41. var f:=ReadAllText('C:\Users\danko\OneDrive\Рабочий стол\27-B.txt').ToIs.Skip(1).ToA;
  42. var m:=MatrFill(25,7,10**20);
  43. for var i:=0 to f.Length-1 do begin
  44.   s+=f[i];
  45.   if (f[i]<0) and (abs(f[i]) mod 10=4) then k+=1;
  46.   if s.D(25) and (k.D(7)) then remax(ms,s);
  47.   remax(ms,int(s-m[s mod 25,k mod 7]));
  48.   m[s mod 25,k mod 7]:=min(m[s mod 25,k mod 7],s);
  49.   end;
  50.   print(ms);
  51. --------------------------------------------------------------------------------------------------------------------------------------###
  52. var (sum,ms,count):=(0,0,0);
  53. var k:=|0|*20;
  54. var q:= new List<int>;
  55. assign(input,'C:\Users\danko\OneDrive\Рабочий стол\27-B.txt');
  56. var n:=ri;
  57. loop 9 do begin var x:=ri; sum+=x; q.Add(sum); end;
  58. loop n-9 do begin
  59.   var x:=ri;
  60.   sum+=x;
  61.   if sum.D(20) then count+=1;
  62.   count+=k[sum mod 20];
  63.   end;
  64. k[q[0] mod 20]+=1;
  65. q.Remove(q[0]);
  66. q.Add(sum);
  67. print(count);
  68.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement