Куртки
Благотворительные организации каждый год собирают деньги на теплую одежду бедным. У главного героя этой задачи есть целых две куртки, но это не мешает ему страдать. Одна из его курток — зимняя, а вторая — демисезонная (в ней приятно ходить осенью или весной). Куртки подобраны идеально: в зимней куртке комфортно при температуре в x градусов или ниже, а в демисезонной – при температуре выше x градусов. В общем, жить бы ему и радоваться. Но откуда бы тогда появиться задаче?
Проблема нашего героя в том, что он, надевая сегодня не ту куртку, которую носил вчера, постоянно забывает переложить проездной, ключи и прочие полезные вещи в карман новой куртки. Немного подумав, он решил, что не совсем подходящая к сегодняшней температуре куртка — это не так плохо, как забытые вещи. Поэтому, если сегодня незначительно теплее, чем граничная температура, он все равно пойдет в зимней куртке, аналогично для демисезонной. Чуть более формально это звучит так: он меняет куртку с зимней на демисезонную, только если сегодня за окном есть хотя бы x+d градусов, а с демисезонной на зимнюю — если за окном x−d градусов или холоднее. Иногда ему, конечно, не очень комфортно на улице, но зато все вещи точно с собой.
По архиву прогноза погоды за последние n дней определите, сколько дней главному герою этой задачи было некомфортно. Считается, что в первый день он вышел в той куртке, в которой в этот день комфортно.
Входные данные
В первой строчке даны два вещественных числа x и d — граница температуры между куртками и отклонение температуры, которое герой задачи считает незначительным (−89≤x≤55,1≤d≤6).
Во второй строчке дано целое число n, 1≤n≤105 — количество дней в архиве прогноза погоды.
В третьей строчке перечислены n вещественных чисел ti — температура в i-й день (−89≤ti≤55).
Выходные данные
Выведите одно число: количество дней, в которые герою задачи было некомфортно в той куртке, в которой он вышел в этот день
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;
¬А отрицание А, то есть х не принадлежит А
перепишем и упростим исходную формулу
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]