int minimal_digit(int n) { const int base = 10; int min_digit = 0; while (n>0) { int digit = n%base; if (digit < min_digit) min_digit = digit; n /= base; } return min_digit; }
int filter_digits(int n, int filter_by) { const int base = 10; int pow_base = 1; int result = 0;
if (filter_by == 0) { return n; }
while (n>0) { int digit = n%base; if (digit % filter_by != 0) { result += digit * pow_base; pow_base *= base; } n /= base; }
Формулы: а) !A and !B and C б) !A or !B or C в) A or B or !C г) A or B or C
Будем подставлять данные формулы в фрагмент таблицы. a) 0 0 0 1 --> !0 and !0 and 0 = 1 and 1 and 0 = 0. А должно получиться 1. Значит, первая формула не подходит к первой строке фрагмента б) Во всех фрагментах A=0. Но тогда формула: !A or ... = !0 or .. = 1 or = 1. То есть вторая формула подходит под весь фрагмент таблицы истинности F. в) 0 0 1 0 -> 0 or 0 or !1 = 0 or 0 or 0 = 0. То есть третья формула не подходит ко второй строке фрагмента. г) 0 0 0 1 -> 0 or 0 or 0 = 0. Четвёртая формула не подходит к 1й строке фрагмента.
Итого, подходит только вторая формула: А(инверсия)v(инверсия)BvC
N = 8
i = 3
I = 1/8 Мбайт = 0,125 * 1024 * 1024 * 8 = 1048576 бит
I = k * i
k = I / i
k = 1048576 / 3 = 349525.333
Округлим в меньшую сторону, так как еще в большую округлить не можем(символ не влезет)
ответ: 349525 символов