В некотором царстве жил Змей Горыныч. У него было N голов и M хвостов. Иван-царевич решил уничтожить губителя человеческих душ, для чего ему его кума Баба Яга подарила волшебный меч, так как только им можно убить Змея Горыныча. Если отрубить одну голову, то на её месте вырастает новая, если отрубить хвост, то вместо него вырастет 2 хвоста. Если отрубить два хвоста, то вырастает 1 голова, и только когда отрубить 2 головы, то не вырастет ничего. Змей Горыныч гибнет только в том случае, когда ему отрубить все головы и все хвосты. Определить минимальное количество ударов мечом, нужное для уничтожения Змея Горыныча. Входные данные
В единственной строке записаны через пробел два числа N, M (0 ≤ N, M ≤ 1000).
Выходные данные
В единственную строку нужно вывести одно число – минимальное количество ударов мечом, или -1, если уничтожить Змея Горыныча невозможно.
Пример входных данных: 3 3
Пример выходных данных: 9
Приведём все степени к основанию 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
#include <iostream>
#include <conio.h>
#include <string>
using namespace std;
int main()
{
string str;
getline(cin, str);
for (int i = 1; i < str.length(); i++)
{
if (i % 3 == 0)
{cout << str[i] << endl;}
}
_getch();
return 0;
}
2)
#include <iostream>
#include <conio.h>
#include <string>
using namespace std;
int main()
{ string str;
getline(cin, str);
for (int i = 1; i < str.length(); i++)
{
if (i % 2 == 0)
{ if (str[i] != 'a')
{ str[i] = 'a'; }
if (str[i] != 'b')
{ str[i] = 'b'; }
if (str[i] != 'c')
{ str[i] = 'c'; }
}
}
cout << str << endl;
_getch();
return 0;}