<u><em>// PascalABC.NET 3.3, сборка 1590 от 03.12.2017</em></u>
<u><em>// Внимание! Если программа не работает, обновите версию!</em></u>
begin
var a:=ArrRandom(12,-12,12); a.Println;
a:=a[1:6]+a[:1]+a[7:]+a[6:7]; a.Println
end.
<u>Пример</u>
3 12 5 -2 -5 4 0 1 -8 -3 -4 -12
12 5 -2 -5 4 3 1 -8 -3 -4 -12 0
<em>// PascalABC.NET 3.3, сборка 1555 от 21.10.2017</em>
<em>// Внимание! Если программа не работает, обновите версию!</em>
begin
Writeln('*** Исходный массив ***');
var a:=MatrRandom(3,8,-99,99);
a.Println(4); Writeln(4*a.ColCount*'-');
Writeln('Искомое произведение ',
a.ElementsWithIndexes.Where(t->t[2].IsOdd).Select(t->t[0]).
Aggregate(BigInteger(1),(x,y)->x*y));
end.
<u>Пример</u>
*** Исходный массив ***
60 -23 10 -18 -97 -90 -56 5
32 51 -2 3 63 -76 17 85
-41 -64 9 59 84 -66 69 28
--------------------------------
Искомое произведение 1284904222221312000
1. догадаться что скрывается под многоточием. вероятно, полностью этот блок выглядит так:
(x1>x2)^(x1>y1)=1
(x2>x3)^(x2>y2)=1
(x3>x4)^(x3>y3)=1
(x4>x5)^(x4>y4)=1
(x5>x6)^(x5>y5)=1
(x6>x7)^(x6>y6)=1
(x7>y7)=1
2. понять что такое "наборы значений переменных". - это просто списки значений для иксов и игриков. значит, нам сначала придётся определить эти значения, а потом посчитать количество этих "наборов".
3. логические переменные - переменные, в которых минимальное значение 0, а максимальное 1.
4. значит, подставляя разные значения в иксы и игрики, мы должны найти нужный ответ.
5. предположительно, автор вопроса придумал количество иксов и игриков беря за основу количество битов в байте...
6. ответ (ноль) на данное задание можно получить 2 способами:
1 - не долгое логическое размышление
1. результат логического умножения может быть 1, только если все множители == 1
2. данный в условии блок может быть переструктурирован как:
(
((x1>x2)^(x1>y1))^
((x2>x3)^(x2>y2))^
((x3>x4)^(x3>y3))^
((x4>x5)^(x4>y4))^
((x5>x6)^(x5>y5))^
((x6>x7)^(x6>y6))^
(x7>y7)
) = 1
3. т.е. ни при каких наборах значений это логическое равенство не может быть верным, т.е. не может быть 1, т.е. не может соответствовать сразу всем перечисленным условиям
2 - эксперементальное: написать программу
пишу на Python, потому что паскаль уже давно забыл
count = 0
def bin_values(in_int):
ret = []
b = bin(in_int)[2:]
while len(b) != 7:
b = '0' + b
for i in b:
ret.append(bool(int(i)))
return ret
for xs in range(2**7):
x1, x2, x3, x4, x5, x6, x7 = bin_values(xs)
print(xs)
print(x1, x2, x3, x4, x5, x6, x7)
for ys in range(2**7):
y1, y2, y3, y4, y5, y6, y7 = bin_values(ys)
if (
((x1 > x2) and (x1 > y1)) and
((x2 > x3) and (x2 > y2)) and
((x3 > x4) and (x3 > y3)) and
((x4 > x5) and (x4 > y4)) and
((x5 > x6) and (x5 > y5)) and
((x6 > x7) and (x6 > y6)) and
(x7 > y7)
):
count += 1
print(count)
Function min(a: array of integer): integer;
var i, m: integer;
begin
for i := 0 to length(a) do
if (a[i] < m) then m := a[i];
result := m;
<span>end;
Вот, в теории должно работать, но проверить, извините, не могу, PascalABC не поддерживает передачу массивов><</span>
1. function f( x: float ): float;
var i: integer;
begin
for i := 0 to size-1 do
if (fx[ i ] <= x) and (x <= fx[ i+1 ]) then
begin
f := (fy[ i+1 ] - fy[ i ]) / (fx[ i+1 ] - fx[ i ]) * (x - fx[ i ] );
break;
end;
end;
...
x := a;
dx := (b-a) / 10;
while (x <= b) do
begin
writeln( x, ' => ', f(x) );
x := x + dx;
end;
2. sqrt( pow( x, 4/5 ) + pow( x, (4-x)/5 ) ) + ln( abs(x-0.25) )