Для удобства вычислений переведём размер сканируемого изображения в дюймы: 20,32 × 20,32 (см) = 8 × 8 (inch).
Сначала найдём количество пикселей по горизонтали, по вертикали, затем общее количество пикселей, исходя из разрешающей сканера. Зная, что каждый пиксель кодируется 4 битами, найдём объём памяти, необходимый для хранения графической информации, что и будет являться информационным объёмом файла.
1) 600 × 8 = 4800 (px) – количество пикселей по горизонтали.
2) 1200 × 8 = 9600 (px) – количество пикселей по вертикали.
#include<stdio.h> int main(){ int div[10001]; int i,d,n,x; long int p = 1;
for(i = 0; i < 10000; i++) div[i] = 1;
scanf("%d",&n); for(i = 0; i < n; i++){ scanf("%d",&x); d = 2; while(d <= x){ while(x%d == 0){ x /= d; div[d]++; } d++; } }
for(i = 0; i < 10000; i++) p *= div[i]; printf("%ld",p); return 0; }
/* Небольшое пояснение: Идея решения заключается в том, что любой делитель результата представим как произведение простых чисел в определенных степенях. Тогда набор этих степеней однозначно определяет соответствующий делитель. Максимальная степень, с которой может быть взято простое число, является суммой степеней, с которыми оно входит в множители. Для простоты массив вхождений делителей задан от 0 до 10000, но т.к. перебор делителей множителей идет по возрастанию, учтены будут только простые делители.
Пример: 10 * 8 * 9 = 720
10 = 2^1*5^2 8 = 2^3 9 = 3^2
Т.е. число 2 входит в произведение в четвертой степени, 3 - во второй, 5 - в первой.
Значит любой делитель числа 720 представим (единственным образом) в виде 2^(d2) * 3^(d3) * 5^(d5), где d2 = 0..4, d3 = 0..2, d5 = 0..1
Ну примерно 2.400.000анимешников\анимешниц во всём мире