Такие задания очень легко решаются, если заменить логические знаки на арифметические. Сейчас я напишу логические знаки и их аналогичные арифметические.
∧ или & - * (умножение)
∨ - + (сложение)
¬ - отрицание (1 превращается в 0, а 0 в 1)
Запишу в качестве примера последнюю таблицу первую строчку
при A=0 B=0 C=0
A&B меняем на A*B
получается 0*0 ответ 0
A&B∨C меняем на A*B+C
получается 0*0+0 ответ 0
¬(A&B∨C) меняем на ¬(A*B+C)
получается ¬(0*0+0) сначала решаем в скобках, будет ¬(0) или ¬0 ответ: 1
Думаю всё понятно, ничего сложного. В приложении прикрепляю 2 последние таблицы.
67125/2=33562 - ост 1
33562/2=16781 - ост 0
16781/2=8390 - ост 1
...
1/2=0 ост 1
Запишем остатки в обратном порядке: 10000011000110101
67125 (10)=10000011000110101 (2)
Теперь переведем из 2 в 8
10000011000110101 (2), разбиваем числа по 3 начиная с конца:
010 000 011 000 110 101 , переведем каждое из них в 8
2 0 3 0 6 5
10000011000110101 (2) = 203065 (8)
Теперь переведем из 2 16
10000011000110101 (2), разбиваем числа по 4 начиная с конца:
0001 0000 0110 0011 0101 , переведем каждое из них в 16
1 0 6 3 5
10000011000110101 (2) = 10635 (16)
Ответ: 10000011000110101 (2); 203065 (8); 10635 (16);
PS: Разбитие на 3 и на 4 объясняется тем, что 1 число восьмеричное пишется в двоичной системе из 3 знаков, а 16 из 4.
<span>program mas;
const n = 11;
var a : array [1..n] of integer;
i: byte;
begin
writeln ('Vvedite massiv');
for i := 1 to n do readln(a[i]);
i := (n div 2) + 1;
writeln(a[i],' - element rovno v centre massiva');
end.</span>
#include <iostream>using namespace std;
//Функция возвращает минимальное возможное число,//Состоящее из цифр числа aint min(int a) { //Массив для подсчета цифр в числе int *k = new int[10]; for (int i = 0; i < 10; i++) k[i] = 0;
//Считаем, сколько раз повторяется каждая цифра в числе for (; a; a /= 10) { int t = a \% 10; //Если цифра не 0 if (t) k[t]++; }
//Переменная для результата int rez = 0; //Множиель разряда int multiplier = 10;
//Идем по массиву в обратном порядке for (int i = 9; i > 0; i--) //Если данная цифра есть в массиве (числе) for (; k[i]; k[i]--) { //Дописываем цифру в результат rez += i * multiplier * 0.1; //Увеличиваем множитель, для перехода к следующему разряду multiplier *= 10; } //Удаление массива delete[] k; return rez;}
void main(){ //Входные данные int n; printf("\n << n = "); scanf("\%d",&n);
//Вывод результата printf("\n >> min = \%d", min(n));
system("pause>>void");}