program z1; var i,j,m,k,z,x,l:integer; begin readln(m); for i:=0 to m do begin z:=1; if i=0 then z:=1 else begin x:=i; while x<>0 do begin z:=z*4; x:=x-1; end; end; if ((z<m) and (z*4>m)) then writeln(i); if z=m then writeln(i-1); end; end.
program z2; var i,j,n,k,z,x,l:integer; begin readln(n); for i:=0 to n do begin z:=1; if i=0 then z:=1 else begin x:=i; while x<>0 do begin z:=z*2; x:=x-1; end; end; if ((z>n) and (z/2<n)) then writeln(i); if z=n then writeln(i+1); end; end.
program z3; var i,j,n,k,z,x,s:integer; begin readln(n); s:=0; for i:=1 to n do begin z:=1; for j:=i to 2*i do z:=z*j; s:=s+z; end; writeln(s); end.
program z1;
var
i,j,m,k,z,x,l:integer;
begin
readln(m);
for i:=0 to m do begin z:=1;
if i=0 then z:=1 else begin
x:=i;
while x<>0 do begin
z:=z*4;
x:=x-1;
end; end;
if ((z<m) and (z*4>m)) then writeln(i);
if z=m then writeln(i-1);
end;
end.
program z2;
var
i,j,n,k,z,x,l:integer;
begin
readln(n);
for i:=0 to n do begin z:=1;
if i=0 then z:=1 else begin
x:=i;
while x<>0 do begin
z:=z*2;
x:=x-1;
end; end;
if ((z>n) and (z/2<n)) then writeln(i);
if z=n then writeln(i+1);
end;
end.
program z3;
var
i,j,n,k,z,x,s:integer;
begin
readln(n); s:=0;
for i:=1 to n do begin z:=1;
for j:=i to 2*i do
z:=z*j;
s:=s+z; end;
writeln(s);
end.
время 2 ночи
...думаю пора спать )
Последняя цифра числа - остаток деления на N, где N - основание системы счисления. Соответственно, последние две цифры - остаток от деления на N^2.
12₄ = 1*4 + 2 = 6₁₀
Выходит, что нам нужно найти все десятичные числа, которые не превосходят 40 и при делении на 16 дают остаток 12.
Общий вид таких чисел: k*16 + 6. K - любое целое неотрицательное число. Теперь просто подставляем.
если k = 0, то получается число 5.
если k = 1, то получается число 22.
если k = 2, то получается число 38.
Очевидно, что дальше мы выйдем за границы нужного нам диапазона.
ответ: 5, 22, 38