Есть задание и решение в виде кода, в коде ошибка скорее всего в четвёртой строке, в ответ выдаёт 119 7330.0, а должно быть 119 -7213. В файле содержится последовательность целых чисел. Элементы последовательности могут принимать значения от -10 000 до 10 000 включительно. Определите и запишите в ответ сначала количество троек элементов последовательности, в которых хотя-бы одно число кратно 12, а каждое число делится на 3, затем минимальное из средних арифметических элементов таких троек. В данной задаче под тройкой подразумевается три идущих подряд элемента последовательности.
a = [int(x) for x in open("""17-1999.txt""")]
ans = []
for i in range(len(a)-2):
if (abs(a[i])%12==0 or abs(a[i+1])%12==0 or abs(a[i+2])%12==0) and abs(a[i])%3==0 and abs(a[i+1])%3==0 and abs(a[i+2])%3==0:
ans.append((a[i]+a[i+1]+a[i+2]))
m = max(ans)/3
print(len(ans),m)
1) Высчитаем количество пикселей в изображении.
128 * 128 = 16384 пикселя.
2) Узнаем информационный вес каждого пикселя.
Формула нахождения информации N = 2i (где N - количество цветов в палитре, i - количество информации в битах, которое несет каждый пиксель).
256 = 28
Один пиксель несет 8 бит информации.
3) Найдем информационный вес изображения.
16384 * 8 = 131072 бита
4) Переведем биты в байты. 1 Байт = 8 битам.
131072 : 8 = 16384 байта.
5) Переведем байты в Кбайты. 1 Кбайт = 1024 байт.
16384 : 1024 = 16 Кбайт.
ответ: объем памяти нужен минимум 16 Кбайт.
1)
var a,b,x,y:longint;
begin
write("Vvedite nachalo i konec otrezka: ");
read(a,b);
write("Vvedite x: ");
read(x);
y:=sqr(x)*x;
if (y>a)and(y<b) then write("Na dannom otrezke znachenie funkcii ravno ",y) else write("Na dannom otrezke net reshenii");
readln
end.
2)
var c,i:byte;
begin
for i:=49 to 215 do
if (i mod 4=0) then c:=c+1;
write("Kolichestvo chisel, kratnyh 4 na zadannom promezhutke ravno ",c);
readln
end.
3)
var i:integer;
p:longint;
for i:=1000 to 9999 do
if (i mod 10=3) then p:=p*i;
write("Proizvedenie chetyrehznachnyh chisel, okanchivaushihsya na 3 ravno ",p);
readln
end.
4)
var i:byte;
c:integer;
begin
for i:=221 to 778 do
if ((i mod 10)=(i div 100)) then c:=c+1;
write("Kolichestvo chisel ravno ",c);
readln
end.
5)
var i:longint;
c:integer;
begin
for i:=10000 to 99999 do
if ((i mod 10)=(i div 10000))and(((i mod 100)div 10)=((i div 1000)mod 10)) then c:=c+1;
write("Kolichestvo chisel ravno ",c);
readln
end.