Формулы: а) !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
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
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;
}
return result;
}
int main()
{
int n;
std::cout << "Введите число n: " << std::endl;
std::cin >> n;
int digit = minimal_digit(n);
int result = filter_digits(n, digit);
std::cout << "ответ: " << result << std::endl;
return 0;
}