#include <iostream>
#include <string>
#include <math.h>
using namespace std;
int main()
{
/*
string name;
cout << "What is your name? ";
getline(cin, name);
cout << "Hello, " << name << "!\n";
*/
int Massiv[24] = {0}, //24 числа последовательности
N, S, //N - количество чисел, S - суммарное число
AllCombinations = 0,
Combination = 0,
Znak,
Resultat, n;
N = 3;
S = 13;
/*
cout << "Vvedite N:";
cin >> N;
cout << "Vvedite S:";
cin >> S;
cout << "Vvedite massiv chisel:\n";
for(n = 0; n < N; n++)
{
cout << "\n" << n << "-i element:";
cin >> Massiv[n];
cout << "\nMassiv[n] = " << n;
}
*/
Massiv[0] = 7;
Massiv[1] = 3;
Massiv[2] = 9;
Massiv[3] = 0;
AllCombinations = pow(2, N-1);
cout << "AllCombinations = " << AllCombinations << "\n";
for(Combination = 0; Combination < AllCombinations; Combination++)
{
Resultat = Massiv[0];
//cout << "Combination = " << Combination << "\n"; //Debug
for(Znak = N-1; Znak >= 0; Znak--)
{
//cout << "Znak = " << Znak << "\n"; //Debug
if(Combination & (1<<(Znak-1)))
{//-
Resultat -= Massiv[N-Znak];
//cout << "if = -" << "\n"; //Debug
}
else
{//+
Resultat += Massiv[N-Znak];
//cout << "if = +" << "\n"; //Debug
}
}
cout << "\nResultat = " << Resultat << "\n";
cout << "-----------------------------------------------------\n";
if(Resultat == S)
{
cout << "Кодовая комбинация найдена!!!!!\n";
cout << "Combination = " << Combination << "\n";
//Вывод кодовой комбинации
cout << Massiv[0];
for(n = 1; n < N; n++)
{
if(Combination & (1<<(N-n-1)))
{//-
cout << "-";
}
else
{//+
cout << "+";
}
cout << Massiv[n];
}
cout << "=" << S;
return 0;
}
}
cout << "Кодовая комбинация не найдена.:(";
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8bWF0aC5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1haW4oKQp7Ci8qICAgIAogIHN0cmluZyBuYW1lOwogIGNvdXQgPDwgIldoYXQgaXMgeW91ciBuYW1lPyAiOwogIGdldGxpbmUoY2luLCBuYW1lKTsKICBjb3V0IDw8ICJIZWxsbywgIiA8PCBuYW1lIDw8ICIhXG4iOwoqLyAgCgoKCmludCBNYXNzaXZbMjRdID0gezB9LCAgLy8yNCDRh9C40YHQu9CwINC/0L7RgdC70LXQtNC+0LLQsNGC0LXQu9GM0L3QvtGB0YLQuAogICAgTiwgUywgICAgICAgIC8vTiAtINC60L7Qu9C40YfQtdGB0YLQstC+INGH0LjRgdC10LssIFMgLSDRgdGD0LzQvNCw0YDQvdC+0LUg0YfQuNGB0LvQvgogICAgQWxsQ29tYmluYXRpb25zID0gMCwKICAgIENvbWJpbmF0aW9uID0gMCwKICAgIFpuYWssCiAgICBSZXN1bHRhdCwgbjsKCk4gPSAzOwpTID0gMTM7Ci8qCmNvdXQgPDwgIlZ2ZWRpdGUgTjoiOwpjaW4gPj4gTjsKY291dCA8PCAiVnZlZGl0ZSBTOiI7CmNpbiA+PiBTOwoKCmNvdXQgPDwgIlZ2ZWRpdGUgbWFzc2l2IGNoaXNlbDpcbiI7CmZvcihuID0gMDsgbiA8IE47IG4rKykKewogICAgY291dCA8PCAiXG4iIDw8IG4gPDwgIi1pIGVsZW1lbnQ6IjsKICAgIGNpbiA+PiBNYXNzaXZbbl07ICAgIAogICAgY291dCA8PCAiXG5NYXNzaXZbbl0gPSAiIDw8IG47Cn0KKi8KTWFzc2l2WzBdID0gNzsKTWFzc2l2WzFdID0gMzsKTWFzc2l2WzJdID0gOTsKTWFzc2l2WzNdID0gMDsKCgpBbGxDb21iaW5hdGlvbnMgPSBwb3coMiwgTi0xKTsKY291dCA8PCAiQWxsQ29tYmluYXRpb25zID0gIiA8PCBBbGxDb21iaW5hdGlvbnMgPDwgIlxuIjsKICAKZm9yKENvbWJpbmF0aW9uID0gMDsgQ29tYmluYXRpb24gPCBBbGxDb21iaW5hdGlvbnM7IENvbWJpbmF0aW9uKyspCnsKICAgIFJlc3VsdGF0ID0gTWFzc2l2WzBdOwogICAgLy9jb3V0IDw8ICJDb21iaW5hdGlvbiA9ICIgPDwgQ29tYmluYXRpb24gPDwgIlxuIjsgIC8vRGVidWcKICAgIGZvcihabmFrID0gTi0xOyBabmFrID49IDA7IFpuYWstLSkKICAgIHsKICAgICAgICAvL2NvdXQgPDwgIlpuYWsgPSAiIDw8IFpuYWsgPDwgIlxuIjsgIC8vRGVidWcKICAgICAgICBpZihDb21iaW5hdGlvbiAmICgxPDwoWm5hay0xKSkpICAgICAgCiAgICAgICAgey8vLQogICAgICAgICAgICBSZXN1bHRhdCAtPSBNYXNzaXZbTi1abmFrXTsKICAgICAgICAgICAgLy9jb3V0IDw8ICJpZiA9IC0iIDw8ICJcbiI7ICAvL0RlYnVnCiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICB7Ly8rCiAgICAgICAgICAgIFJlc3VsdGF0ICs9IE1hc3NpdltOLVpuYWtdOwogICAgICAgICAgICAvL2NvdXQgPDwgImlmID0gKyIgPDwgIlxuIjsgIC8vRGVidWcKICAgICAgICB9CiAgICAgICAgCiAgICB9CiAgICBjb3V0IDw8ICJcblJlc3VsdGF0ID0gIiA8PCBSZXN1bHRhdCA8PCAiXG4iOwogICAgY291dCA8PCAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiI7CiAgICBpZihSZXN1bHRhdCA9PSBTKQogICAgewogICAgICAgIGNvdXQgPDwgItCa0L7QtNC+0LLQsNGPINC60L7QvNCx0LjQvdCw0YbQuNGPINC90LDQudC00LXQvdCwISEhISFcbiI7CiAgICAgICAgY291dCA8PCAiQ29tYmluYXRpb24gPSAiIDw8IENvbWJpbmF0aW9uIDw8ICJcbiI7CiAgICAgICAgLy/QktGL0LLQvtC0INC60L7QtNC+0LLQvtC5INC60L7QvNCx0LjQvdCw0YbQuNC4CiAgICAgICAgY291dCA8PCBNYXNzaXZbMF07CiAgICAgICAgZm9yKG4gPSAxOyBuIDwgTjsgbisrKQogICAgICAgIHsKICAgICAgICAgICAgaWYoQ29tYmluYXRpb24gJiAoMTw8KE4tbi0xKSkpICAgICAgCiAgICAgICAgICAgIHsvLy0KICAgICAgICAgICAgICAgIGNvdXQgPDwgIi0iOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgey8vKwogICAgICAgICAgICAgICAgY291dCA8PCAiKyI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY291dCA8PCBNYXNzaXZbbl07CiAgICAgICAgfQogICAgICAgIGNvdXQgPDwgIj0iIDw8IFM7CiAgICAgICAgcmV0dXJuIDA7CiAgICB9Cn0KICAKY291dCA8PCAi0JrQvtC00L7QstCw0Y8g0LrQvtC80LHQuNC90LDRhtC40Y8g0L3QtSDQvdCw0LnQtNC10L3QsC46KCI7CnJldHVybiAwOyAgCn0K