41₈=1×8⁰+4×8¹=1+32=33₁₀
520₈=2×8¹+5×8²=16+320=336₁₀
306₈=6×8⁰+3×8²=6+192=198₁₀
Всего маленьких кубиков 5⋅5⋅5=125.
По три окрашенных грани может быть только у угловых кубиков; их всего 8. По две окрашенных грани может быть только у кубиков, которые расположены на ребрах куба, но не в вершинах. На каждом ребре таких кубиков три. Ребер у куба 12, значит таких кубиков 36.
Одна закрашенная грань будет у кубиков, которые лежат на поверхности каждой из граней куба, за исключением крайних. На каждой грани таких кубиков 9. У куба 6 граней, значит таких кубиков 5⋅6=54.
<span>Полностью некрашенными остались кубики, целиком лежащие "внутри" исходного куба. Они образуют куб размером 3х3х3, и их всего 3⋅3⋅3=27. это правильный ответ</span>
<h3>PascalABC.NET 3.4.2, сборка 1864 от 11.11.2018</h3><h3>Внимание! Если программа не работает, обновите версию!</h3>
begin
var a:int64;
Read(a);
(a = 2 ? -1 : (a * a + 1) div 2).Println
end.
<h3>Пример</h3><h3>13</h3><h3>85 </h3>
//PascalABC.NET версия 3.3.1590 от 03.12.2017
//Если программа не запускается, то обновите версию
uses GraphABC;
const
x_min = -15.0;
x_max = 15.0;
dx = 0.01;
function f(x: real): real;
begin
f := 2*x;
end;
begin
//настраиваем размер окна под график, влияет на маштаб
Window.Width := 1000;
Window.Height := 300;
Window.IsFixedSize := True; // фиксируем размеры окна
Coordinate.Origin := Window.Center; //выставляем начало координат в центр окна
Coordinate.SetMathematic; //выставляем направление осей как в математике принято
var scale := Window.Width / (x_max - x_min); // вычисляем маштаб
var x := x_min;
var y_max := f(x_max); // подставляем реальные значения
var y_min := f(x_min); // подставляем реальные значения
repeat
try
var y := f(x);
if y > y_max then y_max := y;
if y < y_min then y_min := y;
finally
x := x + dx;
end;
until x > x_max;
// оси координат, стрелочки сами если надо
Pen.Color := clSilver;
Line(round((x_min - 1) * scale), 0, round((x_max + 1) * scale), 0);
Line(0, round((y_min - 1) * scale), 0, round((y_max + 1) * scale));
Circle(0, round(1 * scale), 1); //единичная метка
Circle(round(1 * scale), 0, 1); //единичная метка
x := x_min;
repeat
try
var y := f(x);
PutPixel(round(x * scale), round(y * scale), clBlueViolet);
finally
x := x + dx;
end;
until x > x_max;
end.