didedoshka

get a 100

Oct 13th, 2022
1,127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.04 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4. #include <queue>
  5. #include <cmath>
  6. #include <set>
  7. #include <stack>
  8. #include <bitset>
  9. #include <map>
  10. #include <ctime>
  11. #include <numeric>
  12. #include <random>
  13.  
  14. #define int long long
  15.  
  16. using namespace std;
  17.  
  18. void solve() {
  19.     string s;
  20.     cin >> s;
  21.     vector<vector<vector<pair<string, long double>>>> dp(5, vector<vector<pair<string, long double>>> (5));
  22.     for (int l = 1; l <= 5; ++l) {
  23.         for (int i = 0; i <= 5 - l; ++i) {
  24.             if (!(stoi(s.substr(i, l)) == 0 && l >= 2)) {
  25.                 dp[i][i + l - 1].emplace_back("(" + s.substr(i, l) + ")", stold(s.substr(i, l)));
  26.                 dp[i][i + l - 1].emplace_back("(-" + s.substr(i, l) + ")", -stold(s.substr(i, l)));
  27.             }
  28.             for (int j = i + 1; j <= i + l - 1; ++j) {
  29.                 for (auto [str1, res1] : dp[i][j - 1]) {
  30.                     for (auto [str2, res2] : dp[j][i + l - 1]) {
  31.                         dp[i][i + l - 1].emplace_back("(" + str1 + "+" + str2 + ")", res1 + res2);
  32.                         dp[i][i + l - 1].emplace_back("(" + str1 + "-" + str2 + ")", res1 - res2);
  33.                         dp[i][i + l - 1].emplace_back("(" + str1 + "*" + str2 + ")", res1 * res2);
  34.                         if (fabs(res2) > 1e-6) {
  35.                             dp[i][i + l - 1].emplace_back("(" + str1 + "/" + str2 + ")", res1 / res2);
  36.                         }
  37.                     }
  38.                 }
  39.             }
  40. //            cerr << i << ' ' << i + l - 1 << '\n';
  41. //            for (auto [str, res] : dp[i][i + l - 1]) {
  42. //                cerr << str << ' ' << res << '\n';
  43. //            }
  44. //            cerr << "===\n";
  45.         }
  46.     }
  47.     for (auto [str, res] : dp[0][4]) {
  48.         if (fabs(res - 100) < 1e-6) {
  49.             cout << str << '\n';
  50.             return;
  51.         }
  52.     }
  53.     cout << "-1\n";
  54. }
  55.  
  56. int32_t main() {
  57. #ifdef DDD
  58.     freopen("input.txt", "r", stdin);
  59. #else
  60.     ios_base::sync_with_stdio(false);
  61.     cin.tie(0);
  62.     cout.tie(0);
  63. #endif
  64.  
  65.  
  66.     solve();
  67. }
Advertisement
Add Comment
Please, Sign In to add comment