По пять цифр в ряду
n = 10:
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
n = 2:
1 10 11 100 101
110 111 1000 1001 1010
1011 1100 1101 1110 1111
10000 10001 10010 10011 10100
n = 3:
1 2 10 11 12
20 21 22 100 101
102 110 111 112 120
121 122 200 201 202
n=5:
1 2 3 4 10
11 12 13 14 20
21 22 23 24 30
31 32 33 34 40
n=8:
1 2 3 4 5
6 7 10 11 12
13 14 15 16 17
20 21 22 23 24
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)
#include <iostream>
using namespace std;
int main()
{
int n, k;
cout << "n = ";
cin >> n;
cout << endl;
int a[n];
for (int i = 0; i < n; i++) {
cout << "a[" << i << "] = ";
cin >> a[i];
cout << endl;
}
cout << "k = ";
cin >> k;
cout << endl;
int c = 0;
for (int i = 0; i < n; i++) {
if (a[i] % 10 == k) c++;
}
int ret[c], pos = 0;
for (int i = 0; i < n; i++) {
if (a[i] % 10 == k) {
ret[pos] = a[i];
pos++;
}
}
cout << "Результат:" << endl;
for (int i = 0; i < c; i++) {
cout << ret[i] << ' ';
}
return 0;
}
На Java
http://pastebin.com/SbfSZLFK
ввод - 1234567890123456
вывод - 66
<span>var n, sum: integer;
begin
readln(n);
sum := 0;
while n > 0 do begin
sum := sum + n mod 10;
n := n div 10
end;
writeln(sum);
end.</span>
1 - истина, 0 - ложь.
not( 0 ) or not( 1 ) and ( 1 )
1 or 0 and 1
1 or 1
сначала выполняются действия в скобках,затем логические операции not,затем and и в конце or.
Ответ: это выражение истинно.