Другие языки программирования и технологии
30 чтобы получилось использовать 1,3,5,7,9,11,13,15
15+13+2
Сергей Леонтьев
а где число 2 в списке предложенных?
Это старая шутка, когда давали карточки с данными числами и предлагалось заполнить ТРИ места в формуле __+__+__=30, нужно было догадаться перевернуть карточку 9, чтобы получилось 6
#include < iostream >
#include < string >
#include < vector >
#include < sstream >
#include < map >
#include < functional >
using namespace std;
int main()
{
setlocale(LC_ALL, "rus");
system("color 0A");
vector < string > dig;
dig.push_back("1");
dig.push_back("3");
dig.push_back("5");
dig.push_back("7");
dig.push_back("9");
dig.push_back("11");
dig.push_back("13");
dig.push_back("15");
dig.push_back("");
vector < string > StSt;
for (unsigned a = 0; a < 9; ++a)
{
for (unsigned b = 0; b < 9; ++b)
{
for (unsigned c = 0; c < 9; ++c)
{
for (unsigned d = 0; d < 9; ++d)
{
for (unsigned e = 0; e < 9; ++e)
{
for (unsigned f = 0; f < 9; ++f)
{
for (unsigned g = 0; g < 9; ++g)
{
for (unsigned h = 0; h < 9; ++h)
{
for (unsigned i = 0; i < 9; ++i)
{
stringstream ss;
ss << dig[a];
if (dig[a] != "") ss << "+";
ss << dig[b];
if (dig[b] != "") ss << "+";
ss << dig[c];
if (dig[c] != "") ss << "+";
ss << dig[d];
if (dig[d] != "") ss << "+";
ss << dig[e];
if (dig[e] != "") ss << "+";
ss << dig[f];
if (dig[f] != "") ss << "+";
ss << dig[g];
if (dig[g] != "") ss << "+";
ss << dig[h];
if (dig[h] != "") ss << "+";
ss << dig[i];
string str;
ss >> str;
StSt.push_back(str);
}
}
}
}
}
}
}
}
}
auto Summ = [](int tt1, int tt2) -> int {return tt1 + tt2; };
map < char, function < int(int, int) > > oper_map = {
{ '+', Summ },
};
cout << "Подходящие выражения" << endl;
unsigned sum_ = 0;
for (unsigned u = 0; u < StSt.size(); ++u)
{
stringstream ss(StSt[u]);
int f;
ss >> f;
ss.clear();
for (; ss.rdbuf()->in_avail() != 0;)
{
int te;
char opp;
ss >> opp >> te;
f = oper_map[opp](f, te);
}
if (f == 30)
{
cout << StSt[u] << " = 30" << endl;
++sum_;
}
}
cout << "Итого из " << StSt.size() << " возможных комбинаций, только " << sum_ << " дало в результате вычислений 30" << endl;
cout << "Что составляет " << 100 * (float)sum_ / StSt.size() << "%" << endl;
cin.get(); cin.get();
return 0;
}
#include < string >
#include < vector >
#include < sstream >
#include < map >
#include < functional >
using namespace std;
int main()
{
setlocale(LC_ALL, "rus");
system("color 0A");
vector < string > dig;
dig.push_back("1");
dig.push_back("3");
dig.push_back("5");
dig.push_back("7");
dig.push_back("9");
dig.push_back("11");
dig.push_back("13");
dig.push_back("15");
dig.push_back("");
vector < string > StSt;
for (unsigned a = 0; a < 9; ++a)
{
for (unsigned b = 0; b < 9; ++b)
{
for (unsigned c = 0; c < 9; ++c)
{
for (unsigned d = 0; d < 9; ++d)
{
for (unsigned e = 0; e < 9; ++e)
{
for (unsigned f = 0; f < 9; ++f)
{
for (unsigned g = 0; g < 9; ++g)
{
for (unsigned h = 0; h < 9; ++h)
{
for (unsigned i = 0; i < 9; ++i)
{
stringstream ss;
ss << dig[a];
if (dig[a] != "") ss << "+";
ss << dig[b];
if (dig[b] != "") ss << "+";
ss << dig[c];
if (dig[c] != "") ss << "+";
ss << dig[d];
if (dig[d] != "") ss << "+";
ss << dig[e];
if (dig[e] != "") ss << "+";
ss << dig[f];
if (dig[f] != "") ss << "+";
ss << dig[g];
if (dig[g] != "") ss << "+";
ss << dig[h];
if (dig[h] != "") ss << "+";
ss << dig[i];
string str;
ss >> str;
StSt.push_back(str);
}
}
}
}
}
}
}
}
}
auto Summ = [](int tt1, int tt2) -> int {return tt1 + tt2; };
map < char, function < int(int, int) > > oper_map = {
{ '+', Summ },
};
cout << "Подходящие выражения" << endl;
unsigned sum_ = 0;
for (unsigned u = 0; u < StSt.size(); ++u)
{
stringstream ss(StSt[u]);
int f;
ss >> f;
ss.clear();
for (; ss.rdbuf()->in_avail() != 0;)
{
int te;
char opp;
ss >> opp >> te;
f = oper_map[opp](f, te);
}
if (f == 30)
{
cout << StSt[u] << " = 30" << endl;
++sum_;
}
}
cout << "Итого из " << StSt.size() << " возможных комбинаций, только " << sum_ << " дало в результате вычислений 30" << endl;
cout << "Что составляет " << 100 * (float)sum_ / StSt.size() << "%" << endl;
cin.get(); cin.get();
return 0;
}
15+15
9+7+3+11
11+9+7+3
Похожие вопросы
- ДАНЫ ЧИСЛА (1,3,5,7,9,11,13,15)
- Задача даны числа 1,3,5,7,9,11,13,15 Нужно взять 3 числа и ТОЛЬКО сложением получить 30
- Ввести одномерный массив n = {3, 5, 7, 9, -11, 13, 15}
- помогите с информатикой. заполнить массиве числами 1,3,5,7,9
- Найдите закономерности 1,1,1,2,3,4,3,5,7_,7,_,5,9,13,_,_,16
- Перевести десятичное число 4843,845510 в новые системы счисления с основаниями 3, 5, 7 с точностью 0,001. Проверить прав
- 1 3 5, 2 4? Какое чило нужно вставить? "6" неправильный ответ
- Напишите программу!!! Разработать процедуру для вычисления чисел Фибаначи(1+2+3+5+8+13...)
- Есть последовательность из восьми чисел: 7 4 2 8 3 1 6 5 Над этой последовательностью разрешено выполнять только о
- Напишите задачу на C++. Найти, какая оценка наиболее часто встречалась на ЕГЭ. Входные данные: 1 1 1 2 2 3 1 3 4 5 3.