// вот тебе решение на паскале, в си сам переделывай function Check(n: integer): boolean; begin result := true; var T := n; while T > 0 do begin if T mod 10 = 0 then //проверка цифры на ноль begin T := T div 10; continue; end; if n mod (T mod 10) = 0 then T := T div 10 else begin result := false; exit; end; end; end;
begin var N := ReadlnInteger('N ='); for var i := 1 to N do if Check(i) then Print(i); end.
1. Переводим сантиметры в дюймы, т.к. разрешение дано в dpi. 1" = 2.54 см. Получаем размер (10.85/2.54)×(11.5/2.54) = 10.85×11.5/2.54² дюйма. 2. На один дюйм приходится 110 точек, поэтому общее количество пикселей составит 10.85×11.5/2.54²×110² = 234016 3. В палитре RGB может быть различное количество цветов, но наиболее популярный режим использует по 1 байту на канал, т.е. цветность 3 байта и в этом случае потребуется 234016×3 = 702048 байт = 702048/1024 ≈ 685.6 Кбайт 4. В градациях серого обычно используется однобайтная палитра (256 оттенков) и тогда потребуется 234016×1 = 234016 байт = 234016/1024² = 0.223 Мбайта памяти.
Задача 2. При глубине цвета 32 бита можно воспроизвести до 2³² = 4 294 967 296 цветов
function Check(n: integer): boolean;
begin
result := true;
var T := n;
while T > 0 do
begin
if T mod 10 = 0 then //проверка цифры на ноль
begin
T := T div 10;
continue;
end;
if n mod (T mod 10) = 0 then
T := T div 10
else
begin
result := false;
exit;
end;
end;
end;
begin
var N := ReadlnInteger('N =');
for var i := 1 to N do
if Check(i) then Print(i);
end.