Блок-схема - в прилагаемом файле.
Программа:
#include <stdio.h>
int main()
{
int s;
for (int i=10; i<=99; i++){
s = i / 10 + i % 10;
if (s*s*s == i*i) printf("%d ",i);
}
return 0;
}
Результат:
27
В 1 байте 8 бит, значит 4*8=32бита
A) A&B∨!A&A∨B&A∨B&!B∨!A&!B=A&B∨0∨B&A∨0∨!A&!B=A&B∨!A&!B
б) !(A&B)&!(C&!A)&!(B&!C)=!(A&B)&(!C∨!!A)&(!B∨!!C)=!(A&B)&(!C∨A)&(!B∨C)= !(A&B)&(!C&!B∨A&!B∨A&C∨!C&C)=!(A&B)&(!C&!B∨A&!B∨A&C∨0)= !(A&B)&!C&!B∨!(A&B)&A&!B∨!(A&B)&A&C=(!A∨!B)&!C&!B∨(!A∨!B)&A&!B∨ (!A∨!B)&A&C=!A&!C&!B∨!B&!C&!B∨!A&A&!B∨!B&A&!B∨!A&A&C∨!B&A&C= !A&!C&!B∨!C&!B∨0∨A&!B∨0∨!B&A&C=!C&!B&(!A∨1)∨!B&A&(1+C)= !C&!B&1∨!B&A&1=!C&!B∨!B&A=!B&(!C∨A)
В)
A B C !A (!A∨B) F
0 0 0 1 1 0
0 1 0 1 1 0
1 0 0 0 0 1
1 1 0 0 1 0
0 0 1 1 1 1
0 1 1 1 1 1
1 0 1 0 0 0
1 1 1 0 1 1
<span>2 мегабайта это 2048 килобайт </span>
Приведём вычисляемое выражение к более удобному виду:
9^22 + 3^66 – 18 = 9^22 + 9^(66/2) – 18 = 9^33 + 9^22 - 18
Далее переведём некоторые числа в третичную систему:
9-10 = 100-3
18-10 = 200-3
[1] Заметим, что число 9^n при n > 0 является круглым в третичной системе и двойки в нём содержаться не будет.
Рассмотрим выражение: 9^(n+m) + 9^n - 18
Вычислим это выражение для m=1 и n от 2 до 8, получится следующее:
n=2: K=1 : R=1002100
n=3: K=3 : R=100222100
n=4: K=5 : R=10022222100
n=5: K=7 : R=1002222222100
n=6: K=9 : R=100222222222100
n=7: K=11 : R=10022222222222100
n=8: K=13 : R=1002222222222222100
где n - степень; R - результат в третичной системе; K - кол-во двоек в R;
Из утверждения [1] и на основе полученных выше результатах видно, что слагаемое 9^(n+m) при m >= 1 на кол-во двоек в результате R никогда влиять не будет, поэтому его можно опустить.
(т.е. в нашем случае 9^33 отбрасываем)
Также в полученых выше результатах на основе анализа зависимости K от n для 9^n - 18 выводится следущая формула:
[2] K(n) = (n - 1) * 2 - 1
Подставляя число 22 в формулу [2], получаем: K(22) = (22 - 1) * 2 - 1 = 41;
Ответ: в выражении 9^22 + 3^66 – 18 в третичной системе будет содержаться 41 двойка.