Текущее состояние системы непересекающихся множеств задано в таблице:
Элемент 0 1 2 3 4 5 6
Предок 1 1 6 0 4 4 0
Обозначим за get(x) операцию определения, к какому множеству принадлежит элемент x.
Как будет выглядеть массив предков после выполнения операции get(2), если используется эвристика сжатия путей? В поле для ответа введите 7 чисел через пробел.
¬А отрицание А, то есть х не принадлежит А
перепишем и упростим исходную формулу
P→((Q∧¬A)→P)
известно что X→Y=¬X∨Y (доказывается просто, например через таблицу истинности)
тогда:
P→(¬(Q∧¬A)∨P)
раскроем скобку ¬(Q∧¬A) с закона де Моргана (стыдно их не знать, если что это такие же основы как и таблицы истинности)
P→(¬Q∨¬¬A∨P) = P→(¬Q∨A∨P) = ¬P∨¬Q∨A∨P
¬P∨P=1 то есть всегда истинно и 1∨Х=Х значит ¬P и P можно убрать
остается ¬Q∨A
Значит х либо принадлежит А либо не принадлежит Q
для выполнения этого условия необходимо чтобы все значения Q принадлежали А, тогда минимальное А совпадает с Q
ответ А=[40,77]
dp[i] = dp[i-1] + dp[i-2] + dp[i-5] + dp[i-10];
ll dp[666];
dp[0] = 1;
for(int i=0;i<=64;i++)
{
dp[i+1]+=dp[i];
dp[i+2]+=dp[i];
dp[i+5]+=dp[i];
dp[i+10]+=dp[i];
cout << i << ": " << dp[i] << endl;
}
это если порядок важен, то есть 2 + 1 != 1 + 2, тогда ответ
489475342266653, наверное
а иначе 644
ll ans=0;
for(int i=0;i<10;i++) // 10
{
for(int j=0;j<20;j++) // 5
{
for(int k=0;k<50;k++) // 2
{
ll now = i*10 + j*5 + k*2;
if(now<=64) ans++;
}
}
}
cout << ans;