Напишите функцию, которая удаляет из переданной ей символьной строки все символы, заключенные в угловые скобки '<' и '>' (вместе с этими скобками С++.
2^n в двоичной системе - это 1 и n нулей после неё. Например, 2^5(10) = 100000(2) Приведём все степени к основанию 2
2^3702-2^468+2^1620-108
-108 можно представить как -128 + 16 + 4
2^3702-2^468+2^1620-2^7 + 2^4 + 2^2
Теперь выстраиваем степени в порядке убывания:
2^3702+2^1620-2^468-2^7 + 2^4 + 2^2
В выражении два вычитания подряд, избавимся от этого, заменив -2^468 на -2^469 + 2^468
2^3702+2^1620 -2^469+2^468-2^7 + 2^4 + 2^2
2^3702 - 1 единица 2^4 - 1 единица 2^2 - 1 единица
Количество единиц в вычитаниях будет равно разнице степеней. Например 1000000-100=1111
2^1620 -2^469 - количеств единиц 1620-469 = 1151 2^468-2^7 - количество единиц 468-7 = 461 Общее количество единиц равно 3+1151+461 = 1615
Svetlana191
25.07.2021
Начнем с утверждения, что это была блондинка, потому что таких утверждений два. Если II сказал правду, то второе его утверждение ложно и блондинка была в шляпе. Тогда утверждение I о брюнетке - ложь. Это рассуждение иллюстрирует вторая сверху таблица. В то же время, будет ложным утверждение IV об отсутствии очков и получается, что была блондинка в шляпе и в очках. В этом случае ложно утверждение III о том, что это была рыжая. Удостоверяемся, что противоречий в цепочке рассуждений нет. Окончательно: это была блондинка в шляпе и очках. Каждый свидетель дал одно истинное показание и одно ложное.
Прочие проверки можно не делать, считая задачу корректной.
#include <iostream>
#include <string>
int main()
{
int i, j, k, length;
std::string s;
std::cin >> s;
length = s.length();
for (int i = 0; i < length; i++)
{
j = i;
k = 0;
if (s[i] == '<')
{
do k++;
while (s[j++] != '>');
}
if (k != 0)
{
s.erase(i, k);
length -= k;
i--;
}
}
std::cout << s;
return 0;
}