Зачетная работа. измерение изображений. 1. какой минимальный объем памяти (в кбайт) нужно вариант 2. зарезервировать, чтобы можно было сохранить любое растровое изображение размером 512x512 пикселов при условии, что в изображении могут использоваться 256 различных цветов? вответе запишите только целое число, единицу измерения писать не нужно. 2. автоматическая фотокамера производит растровые изображения размером 800 x 640 пикселей. при этом объём файла с изображением равен 125 кбайт, упаковка данных не производится. какое максимальное количество цветов можно использовать в палитре? 3. какой минимальный объём памяти (в кбайт) нужно зарезервировать, чтобы можно было сохранить любое растровое изображение размером 1024x1024 пикселов при условии, что в изображении могут использоваться 16 различных цветов? в ответе запишите только целое число, единицу измерения писать не нужно. 4. автоматическая фотокамера производит растровые изображения размером 800 на 640 пикселей. при этом объём файла с изображением равен 500 кбайт, упаковка данных не производится. какое максимальное количество цветов можно использовать в палитре?
#include <iostream>
using namespace std;
int main() {
int N, count=0;
long long max;
// создаем и заполняем массив
cin>>N;
long long* array=new long long[N];
for(int i=0; i<N; i++)
cin>>array[i];
//находим максимальный элемент
for(int i=0; i<N; i++)
{
if(i==0)
max=array[i];
else if(array[i]>max)
max=array[i];
}
//считаем элементы, равные максимальному
for(int i=0; i<N; i++)
if(array[i]==max)
count++;
//выводим результат
cout<<max<<" "<<count;
}
Первая - прямой перебор, но хорошо оптимизированный: с целочисленным вычислением корня для короткой схемы на квадратах. У меня на компьютере работает впритык, за 2.8 для 100k. Если бы не питон - укладывалось бы, но лень переписывать. На тестовом сервере скорее всего не уложится в таймлимит, просто для информации, что так тоже можно:
def prime_count(N):
primes = [2, 3]
i, s, s2 = 5, 3, 9
while len(primes) < N:
while s2 <= i:
s += 1
s2 = s*s
flag = True
for p in primes:
if p > s+1:
break
if i % p == 0:
flag = False
break
if flag:
primes.append(i)
i += 2
return primes[N-1]
print(prime_count(int(input(
Вторая: обычное решето Эратосфена. Сравни, насколько короче получилось =) Число 13 выведено эмпирически, для K<=100000 оно подходит, но потом будет маленьким. В общем случае там должна стоять величина log2(N) с каким-то множителем по теореме о плотности простых чисел. Для 100k работает раз в 15 быстрее, так что в лимит уложится точно:
def eratosthenes(N):
i, numbers = 0, [True] * (13 * N)
for index in range(N):
while not numbers[i]: i += 1
numbers[i::i+2] = [False] * len(numbers[i::i+2])
return i+2
print(eratosthenes(int(input(