Задание №17
ЕГЭ-2023. Задание № 17
Тема: Умение составить алгоритм обработки числовой последовательности и записать его в виде простой программы (10–15 строк) на языке программирования. Время выполнения 14 минут.
Условие задачи (файл к задаче - в архиве на главной странице Разбор заданий ЕГЭ
В файле содержится последовательность целых чисел. Элементы последовательности могут принимать целые значения от –10 000 до 10 000 включительно. Определите количество пар последовательности, в которых только одно число оканчивается на 3, а сумма квадратов элементов пары не меньше квадрата максимального элемента последовательности, оканчивающегося на 3. В ответе запишите два числа: сначала количество найденных пар, затем максимальную из сумм квадратов элементов таких пар. В данной задаче под парой подразумевается два идущих подряд элемента последовательности.
Решение я.п. Python:
with open('17.txt','r') as fi:
sp=[int(i) for i in fi]
mx=0
for i in range(len(sp)):
if abs(sp[i])%10==3: mx=max(mx,sp[i]**2)
cnt=0
m=0
for i in range(1,len(sp)):
if abs(sp[i])%10 != abs(sp[i-1])%10 and (abs(sp[i])%10==3 or abs(sp[i-1])%10==3):
if (sp[i]**2 + sp[i-1]**2)>=mx:
cnt +=1
m = max(m,sp[i]**2+sp[i-1]**2)
print(cnt,m)
Ответ: 180 | 190360573
решение я.п. PascalABC.net
я.п. PascalABC.net:
uses School;
begin
var mx:=-MaxInt;
var fi,fo:text;
assign(fi,'17.txt');
reset(fi);
var ms:=new List<integer>;
while seekEof(fi)=False do
begin
var ch: integer;
readln(fi,ch);
ms.add(ch);
if (ch mod 10 = 3) and (ch>mx) then
mx:=ch;
end;
fi.close;
var mm:=mx*mx;
var a:=ms.Select(x->x).ToArray;
var l:=length(a)-1;
var k:=0;
for var i:=1 to l do
begin
if (abs(a[i-1])mod 10=3)<>(abs(a[i]) mod 10=3) then
if (a[i-1]*a[i-1] + a[i]*a[i]) >= mx*mx then
begin
k +=1;
mm:=max(mm,a[i-1]*a[i-1] + a[i]*a[i]);
end;
end;
assign(fo,'out.txt');
rewrite(fo);
writeln(fo,k,' ',mm);
fo.close();
end.
Задача 17 ЕГЭ-2024. Демо
В файле (файл возьмите из архива) содержится последовательность натуральных чисел, каждое из которых не превышает 100 000. Определите количество троек элементов последовательности, в которых ровно два из трёх элементов являются трёхзначными числами, а сумма элементов тройки не больше максимального элемента последовательности, оканчивающегося на 13.
Гарантируется, что в последовательности есть хотя бы одно число, оканчивающееся на 13. В ответе запишите количество найденных троек чисел, затем максимальную из сумм элементов таких троек. В данной задаче под тройкой подразумевается три идущих подряд элемента последовательности.
Решение.
Алгоритм:
1. Найдем максимальный элемент последовательности, который оканчивается на 13. Оформим это отдельной подпрограммой. Одновременно, при чтении числа из файла, будем формировать массив-вектор (я.п. С/С++). Массив-вектор объявляем глобальной переменной.
2. Основной блок программы:
a. Берем по три элемента из массива-вектора, сдвигаясь каждый раз всего на один элемент.
b. Определяем количество трехзначных чисел среди этой тройки и сумму элементов всех трех чисел.
c. Если количество трехзначных чисел в тройке ровно 2, а сумма элементов тройки не превышает максимального значения – подсчитываем количество таких троек (увеличиваем счетчик троек чисел на 1).
Код программы я.п. Python:
with open('17_2024.txt') as fi:
sp=[int(i) for i in fi]
mx=0
for i in range(len(sp)):
if sp[i]%100 == 13: mx=max(mx,sp[i])
my_set = set()
for i in range(100,1000,1):
my_set.add(i)
number = 0
sumtr = 0
for i in range(0,len(sp)-2):
sum = 0
cnt = 0
for j in range(i,i+3):
if sp[j] in my_set: cnt +=1
sum +=sp[j]
if cnt ==2 and sum<=mx:
number +=1
sumtr = max(sumtr,sum)
print(number,sumtr)
Ответ: 959 || 97471
Рассмотрим решение нескольких задач этой группы.
Задача 1. файл для решения
В файле содержится последовательность целых чисел. Элементы последовательности могут принимать целые значения от –10 000 до 10 000 включительно. Определите и запишите в ответе сначала количество пар элементов последовательности, в которых оба числа не делятся на 4, затем максимальную сумму элементов такой пары. В данной задаче под парой подразумевается два идущих подряд элемента последовательности.
Например, для последовательности из шести элементов: 6; 4; 9; –3; 6; 2 ответ: 3 8.
Решение я.п. Python:
with open('17-02.txt','r') as fi:
sp = [int(i) for i in fi]
cnt = 0
mx = 0
for i in range(1,len(sp)):
if sp[i-1]%4!=0 and sp[i]%4!=0:
cnt +=1
mx = max(mx,sp[i-1]+sp[i])
print(cnt, mx)
решение я.п. С/С++ и PascalABC.net
Ответ: 2855 | 19635
я.п. PascalABC.net:
uses School;
begin
var cnt:=0;
var fi,fo: text;
var sp:=new List<integer>;
assign(fi,'17-02.txt');
reset(fi);
repeat
var ch:=readInteger(fi);
sp.Add(ch);
until seekeof(fi)=true;
fi.close();
var ln:=sp.Count;
var mx:=-maxInt;
for var i:=1 to ln do
begin
if not sp[i-1].Divs(4) and not sp[i].Divs(4) then
begin
cnt +=1;
mx:=max(mx,sp[i-1]+sp[i]);
end;
end;
println(cnt,mx);
end.
Задача 2.
Рассматривается множество целых чисел, принадлежащих числовому отрезку [1157; 9931], которые делятся на 2 и не делятся на 3, 7, 8, 11.
Найдите количество таких чисел и 30-е число в этом множестве, если считать их по порядку, с конца (считая, что элементы множества расставлены по возрастанию).
В ответе запишите два целых числа: сначала количество, затем 30-е с конца число множества.
Для выполнения этого задания можно написать программу или воспользоваться редактором электронных таблиц.
Решение.
Рассматриваем только четные числа.
Проверить "неделимость" на указанные числа: 3, 7, 8, 11.
Записать найденные числа в список (это необходимо для ответа на вопрос: 30-е число с конца).
Решение я.п. Python:
sp = []
for i in range(1157,9932):
if i%2==0 and i%3!=0 and i%7!=0 and i%8!=0 and i%11!=0:
sp.append(i)
ln = len(sp)
k30 = sp[ln-30]
print(ln,k30)
ответ и решение я.п. PascalABC.net; C/C++
Ответ: 1706 ; 9770
я.п. PascalABC.net:
uses School;
begin
var sp:=new List<integer>;
for var i:=1157 to 9931 do
begin
if i.Divs(2) and not i.DivsAny(3, 7, 8, 11) then
sp.Add(i);
end;
var ln:=sp.Count;
var k30:=sp[ln-30];
println(ln,k30);
end.
я.п. C/C++:
#include <bits/stdc++.h>
using namespace std;
int main()
{
vector<int> mv;
int l;
for(int i=1157;i<9932;i++)
if(i%2==0){
if(i%3!=0 && i%7!=0 && i%8!=0 && i%11!=0)
mv.push_back(i);
}
l = mv.size();
cout<<mv.size()<<' '<<mv[l-30]<<endl;
return 0;
}
Задача 3.
Рассматривается множество целых чисел, принадлежащих числовому отрезку [1425; 9605], которые делятся на 3 или на 4 и не делятся на 5, 7, 9.
Найдите сотое по порядку такое число и количество не таких чисел на этом отрезке.
В ответе запишите два целых числа: сначала сотое такое число, затем количество не таких чисел.
Решение:
Все такие числа (числа, отвечающие условию задачи) сохраняем в список (при чтении из файла).
При нахождении сотового числа не забываем, что элементы списка нумеруются с 0.
Не такие числа можно определить через длину отрезка и количество таких чисел.
я.п. Python:
sp =[]
for i in range(1425,9606):
if (i%3==0 or i%4==0) and i%5!=0 and i%7!=0 and i%9!=0:
sp.append(i)
ln = len(sp)
k100 = sp[99]
print(k100,(9605-1425+ 1) - ln)
ответ и решение я.п. PascalABC.net и С/С++
1797 | 6000
я.п. PascalABC.net:
uses School;
begin
var sp:=new List<integer>;
for var i:=1425 to 9605 do
if (i.Divs(3) or i.Divs(4)) and not i.DivsAny(5, 7, 9) then
sp.Add(i);
var ln:=sp.Count;
var k100:=sp[99];
println(k100,(9605-1425)+1-ln);
end.
Задача 4.
Рассматривается множество целых чисел, принадлежащих числовому отрезку [1213; 8685], у которых первые две цифры совпадают с последними двумя и которые не делятся на 13, 17, 19.
Найдите минимальное такое число и максимальную длину последовательности не таких чисел на этом отрезке.
В ответе запишите два целых числа: сначала минимальное число, затем максимальную длину последовательности не таких.
Решение.
Первое число, отвечающее условию задачи ("такое число") запоминаем как минимальное.
Перебирая числа отрезка находим непрерывные подпоследовательности, запоминая их длину и выбирая максимальную.
Записываем в ответе: минимальное число, затем - значение максимальной подпоследовательности.
Решение я.п. Python:
cnt = 0
mn = 10**5
t=True
mx = 0
for i in range(1213,8685):
if (i//100 == i%100) and i%13!=0 and i%17!=0 and i%19!=0:
if t:
mn = i
t = False
if cnt!=0:
mx = max(mx,cnt)
cnt = 0
else:
cnt +=1;
print(mn,mx)
ответ и решение я.п. PascalABC.net и С/С++
1414 | 302
я.п. PascalABC.net:
uses School;
begin
var mn:= 10 ** 5;
var t:=true;
var cnt:=0;
var mx:=0;
for var i:=1213 to 8685 do
begin
if ((i div 100) = (i mod 100)) and not i.DivsAny(13, 17, 19) then
begin
if t then
begin
mn:=min(mn,i);
t:=false;
end;
if cnt<>0 then
begin
mx:=max(mx,cnt);
cnt:=0;
end;
end
else
cnt +=1;
end;
println(mn,mx);
end.
Задача 5 файл для решения
В файле содержится последовательность целых чисел. Элементы последовательности могут принимать целые значения от –10 000 до 10 000 включительно. Определите и запишите в ответе сначала количество троек элементов последовательности, в которых все три числа не оканчиваются на 5, затем максимальное число, входящее в такую тройку. В данной задаче под тройкой подразумевается три идущих подряд элемента последовательности.
Например, для последовательности из шести элементов: 6; 5; 9; –3; 6; 2 ответ: 2 9.
Решение:
Только одна особенность: перебирать числа, начиная с третьего элемента! И все.
я.п. Python:
cnt = 0
mx = 0
with open('17-03.txt','r') as fi:
sp =[int(i) for i in fi]
ln = len(sp)
for i in range(2,ln):
if sp[i-2]%10!=5 and sp[i-1]%10!=5 and sp[i]%10!=5:
cnt +=1;
mx = max(mx,max(sp[i],max(sp[i-1],sp[i-2])))
print(cnt,mx)
ответ и решение я.п. PascalABC.net, С/С++
3651 | 9992
я.п. PascalABC.net:
uses School;
begin
var cnt:=0;
var mx:=-maxInt;
var fi,fo: text;
var sp:=new List<integer>;
assign(fi,'17-03.txt');
reset(fi);
repeat
var ch := ReadInteger(fi);
sp.Add(ch)
until seekEof(fi)=true;
fi.close();
var ln:=sp.Count;
for var i:=2 to ln-1 do
begin
if (abs(sp[i-2]) mod 10<>5) and (abs(sp[i-1]) mod 10<>5) and (abs(sp[i]) mod 10<>5) then
begin
cnt +=1;
mx:=max(mx,max(sp[i],max(sp[i-1],sp[i-2])));
end;
end;
assign(fo,'out-03.txt');
rewrite(fo);
println(fo,cnt,mx);
fo.Close();
end.
Задача 6. файл для решения
В файле содержится последовательность целых чисел. Элементы последовательности могут принимать целые значения от –10 000 до 10 000 включительно. Определите количество пар последовательности, в которых элементы отличаются друг от друга не менее чем на 2000, оба элемента не делятся на 3, и при этом оба элемента пары больше среднего арифметического четных элементов последовательности.
В ответе запишите количество найденных пар, а затем наибольший нечетный элемент таких пар. В данной задаче под парой подразумевается два идущих подряд элемента последовательности.
Например, для последовательности из шести элементов: 6; 2501; 8; –3; 11; 3001 ответ: 2 3001.
Решение:
В этой задаче много условий, которые мы разложим по полочкам:
отбираем пары в которых
разность между элементами >= 2000.
оба элемента больше среднего арифметического четных элементов списка.
оба элемента не должны делиться на 3.
среди отобранных пар в каждой находим наибольший нечетный элемент. Эту процедуру лучше оформить функцией, иначе запись условия будет слишком громоздкой.
Решение я.п. Python:
def f(a,b):
if a%2!=0 and b%2!=0:
if a>b: return a
else: return b
if (a%2!=0 and b%2==0): return a
if (a%2==0 and b%2!=0): return b
if (a%2==0 and b%2==0): return 0
cnt = 0
mx = 0
with open('17-19.txt','r') as fi:
sp=[int(i) for i in fi]
sp_odd = list(filter(lambda x: x%2==0,sp))
s,k = sum(sp_odd),len(sp_odd)
sr = s/k
for i in range(1,len(sp)):
if (sp[i-1]%3!=0 and sp[i]%3!=0) and (sp[i-1]>sr \
and sp[i]>sr) and abs(sp[i] - sp[i-1])>=2000:
cnt +=1
m = f(sp[i-1],sp[i])
mx = max(mx,m)
print(cnt,mx)
ответ и решения я.п. PascalABC.net, С/С++
365 | 9995
я.п. PascalABC.net:
Задачи для самостоятельного решения
Задача 1.с
Рассматривается множество целых чисел, принадлежащих числовому отрезку [1574; 9426], которые делятся на 11 и не делятся на 2, 5, 17, 33.
Найдите сумму таких чисел и наибольшую длину последовательности последовательных чисел этого отрезка, которые не принадлежат множеству.
В ответе запишите два целых числа: сначала сумму, затем максимальную длину последовательности не таких чисел.
ответ
973511 | 109
Задача 2.с
Рассматривается множество целых чисел, принадлежащих числовому отрезку [1079; 9895], которые делятся на 14, не оканчиваются на 2 и на 6, и не делятся на 5 и 28.
Найдите максимальное такое число и наименьшее в самой длинной последовательности не таких (если самых длинных последовательностей несколько, найти наименьшее среди них).
В ответе запишите два целых числа: сначала максимальное, затем наименьшее в самой длинной последовательности не таких.
ответ
9814 | 1135
Задача 3.с
Рассматривается множество целых чисел, принадлежащих числовому отрезку [1422; 9428], у которых первая цифра совпадает с последней, которые делятся на 7 и не делятся на 11, 15, 23.
Найдите максимальное такое число и среднее арифметическое не таких чисел. В ответе запишите два целых числа: сначала максимальное, затем целую часть среднего арифметического не таких чисел.
ответ
9359 | 5425
Задача 4.с файл для решения
Назовём средним числом тройки такое число, которое не больше одного, и не меньше другого числа среди трёх. В файле содержится последовательность целых чисел. Элементы последовательности могут принимать целые значения от –10 000 до 10 000 включительно. Определите и запишите в ответе сначала количество троек элементов последовательности, в которых хотя бы одно из трёх чисел нечётно, затем максимальное среднее число, входящее в такую тройку.
В данной задаче под тройкой подразумевается три идущих подряд элемента последовательности. Например, для последовательности из шести элементов: 4; 2; 8; –3; 6; 2 ответ: 3 6.
ответ
4322 | 9898
Задача 5.с
Рассматривается множество целых чисел, принадлежащих числовому отрезку [1122; 9420], которые оканчиваются на 1 или на 7 и не делятся на 3, 17, 23.
Найдите количество тех из них, у которых число, составленное из последних двух цифр, больше 50 и минимальную длину последовательности чисел, не удовлетворяющих основному условию.
В ответе запишите два целых числа: сначала количество, затем минимальную длину последовательности не таких.
Для выполнения этого задания можно написать программу или воспользоваться редактором электронных таблиц.
ответ
495 | 3
Задача 6.с файл для решения
В файле содержится последовательность целых чисел. Элементы последовательности могут принимать целые значения от 1 до 10 000 включительно.
Определите количество пар последовательности, в которых хотя бы одно число делится на минимальный элемент последовательности, а сумма элементов пары меньше среднего арифметического элементов, кратных 4. Гарантируется, что в последовательности есть хотя бы одно число, кратное 4. В ответе запишите два числа: сначала количество найденных пар, затем максимальную из сумм элементов таких пар. В данной задаче под парой подразумеваются два идущих подряд элемента последовательности.
ответ
1428; 829
Задача 7.с (Крылов С.С., Чуркина Т.Е., 2024, в-1) файл для решения
В файле содержится последовательность натуральных чисел. Элементы последовательности могут принимать целые значения от 1 до 100000 включительно.
Определите количество троек элементов последовательности, в которых только одно из чисел является двухзначным, а сумма элементов тройки меньше минимального элемента последовательности, оканчивающегося на 25. В ответе запишите количество найденных троек последовательности, затем максимальную из сумм элементов таких троек.
В данной задаче под тройкой подразумевается три идущих подряд элемента последовательности.
Ответ:
247 41
Задача 8.с (Евич Л.Н., 2023, в-2) файл для решения
В файле содержится последовательность целых чисел. Элементы последовательности могут принимать целые значения от 1 до 10 000 включительно.
Определите количество пар последовательности, в которых хотя бы одно число является делителем максимального элемента последовательности, а сумма элементов пары больше, чем среднее арифметическое элементов, оканчивающихся на 3. Гарантируется, что в последовательности есть хотя бы одно число, оканчивающееся на 3. В ответе запишите два числа: сначала количество найденных пар, затем минимальную из сумм элементов, таких пар. В данной задаче под парой подразумевается два идущих подряд элемента последовательности.
Ответ
72 795
Задача из 2306 варианта (автор О.Богданов) файл для решения
В файле содержится последовательность натуральных чисел. Элементы последовательности могут принимать целые значения от 1 до 100 000 включительно. Определите количество симметричных пар последовательности, произведение которых кратно минимальному трехзначному элементу последовательности, в котором все цифры различны.
В ответе запишите количество найденных пар, затем минимальную из сумм элементов таких пар.
В данной задаче под симметричной парой подразумеваются элементы, равноудаленные от центра последовательности. Например, 1-й и последний или 2-й и предпоследний элементы.
ответ
111 138
Решение заданий № 17 ЕГЭ прошлых лет
Решение задачи средствами электронных таблиц.
Решение задачи языком программирования смотрите ниже.
using namespace std;
int main(){ int i, k=0, mx=0; i = a; while(i<=b){ if(i%3==0&&i%27!=0){ if(i%7!=0&&i%17!=0&&i%19!=0){ ++k; if(i>mx) mx = i; } } ++i; } cout<<k<<' '<<mx; return 0;}
uses SysUtils;const a=1016; b=7937;var i, k, mx: Integer;begink:=0; mx:=0; i:=a; while i<=b do begin if (i mod 3 =0) and (i mod 27 <> 0) then if (i mod 7 <>0) and (i mod 17 <> 0) and (i mod 19 <> 0) then begin Inc(k); if i>mx then mx:=i; end; Inc(i); end; Writeln(k,' ',mx);end.