Const dN=-2; dK=1; Hd=0.5; tN=-1; tK=-3; Ht=-1; var d,t,z:real; i,j,n1,n2:integer; begin n1:=round((dK-dN)/Hd); n2:=round((tK-tN)/Ht); d:=dN-Hd; writeln(' d t z'); for i:=0 to n1 do begin d:=d+Hd; t:=tN-Ht; for j:=0 to n2 do begin t:=t+Ht; z:=sqrt(abs(d*d*d-2))+3*t; writeln(d:4:1,' ',t:4:1,' ',z:6:3); end; end; end.
Поймите и затем запомните "один раз и навсегда", как решаются подобные задачи. 110₂ = 1×2²+1×2¹+0×2⁰ = 4+2 = 6₁₀ А теперь посмотрим на картинку во вложении. Три младших разряда, дающие требуемые 110₂, мы не трогаем. А в старшие разряды начинаем добавлять по +1, получая из 000 значения 001, 010, 011... А это ни что иное, как числа 0, 1, 2, ... но только с четвертого бита, а не с первого, поэтому они будут множителями числа 2³ = 8. И будем получать последовательно 0, 8, 16, ... Остается только прибавлять к ним наше исходное 6, получая ряд 6, 14, 22, ...
Долго? Но это из-за разъяснения. А вот пример. Пусть нам надо найти числа, не превышающие 31, такие, что в трех младших разрядах будет 101₂. Как решить? 101₂ = 5. Три бита заняты, счетчик пойдет с четвертого, давая множители 2³=8. Получаем ряд 5, 8+5=13, 2×8+5=21, 3×8+5=29.
Еще пример. Пусть теперь в младших разрядах записано 1010, а границей будет 45. 1010₂ = 10₁₀. Занято 4 разряда, поэтому счетчик пойдет с пятого, порождая множители кратные 2⁴ = 16. Получаем 10, 16+10=26, 2×16+10=42, ...
var d,t,z:real; i,j,n1,n2:integer;
begin
n1:=round((dK-dN)/Hd);
n2:=round((tK-tN)/Ht);
d:=dN-Hd;
writeln(' d t z');
for i:=0 to n1 do
begin
d:=d+Hd;
t:=tN-Ht;
for j:=0 to n2 do
begin
t:=t+Ht;
z:=sqrt(abs(d*d*d-2))+3*t;
writeln(d:4:1,' ',t:4:1,' ',z:6:3);
end;
end;
end.
Результат:
d t z
-2.0 -1.0 0.162
-2.0 -2.0 -2.838
-2.0 -3.0 -5.838
-1.5 -1.0 -0.682
-1.5 -2.0 -3.682
-1.5 -3.0 -6.682
-1.0 -1.0 -1.268
-1.0 -2.0 -4.268
-1.0 -3.0 -7.268
-0.5 -1.0 -1.542
-0.5 -2.0 -4.542
-0.5 -3.0 -7.542
0.0 -1.0 -1.586
0.0 -2.0 -4.586
0.0 -3.0 -7.586
0.5 -1.0 -1.631
0.5 -2.0 -4.631
0.5 -3.0 -7.631
1.0 -1.0 -2.000
1.0 -2.0 -5.000
1.0 -3.0 -8.000
110₂ = 1×2²+1×2¹+0×2⁰ = 4+2 = 6₁₀
А теперь посмотрим на картинку во вложении.
Три младших разряда, дающие требуемые 110₂, мы не трогаем. А в старшие разряды начинаем добавлять по +1, получая из 000 значения 001, 010, 011...
А это ни что иное, как числа 0, 1, 2, ... но только с четвертого бита, а не с первого, поэтому они будут множителями числа 2³ = 8. И будем получать последовательно 0, 8, 16, ... Остается только прибавлять к ним наше исходное 6, получая ряд 6, 14, 22, ...
Долго? Но это из-за разъяснения.
А вот пример. Пусть нам надо найти числа, не превышающие 31, такие, что в трех младших разрядах будет 101₂. Как решить?
101₂ = 5. Три бита заняты, счетчик пойдет с четвертого, давая множители 2³=8. Получаем ряд 5, 8+5=13, 2×8+5=21, 3×8+5=29.
Еще пример. Пусть теперь в младших разрядах записано 1010, а границей будет 45.
1010₂ = 10₁₀. Занято 4 разряда, поэтому счетчик пойдет с пятого, порождая множители кратные 2⁴ = 16. Получаем 10, 16+10=26, 2×16+10=42, ...