Advertisement
ivnikkk

Untitled

Oct 22nd, 2021
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.01 KB | None | 0 0
  1. #include<iostream>
  2. #include <vector>
  3. #include <algorithm>
  4. #include <cmath>
  5. #include <iomanip>
  6. #include <fstream>
  7. #include <string>
  8. #include <set>
  9. #include <deque>
  10. #include <queue>
  11. #include <map>
  12. #include <bitset>
  13. #include <random>
  14. #include<cassert>
  15.  
  16. using namespace std;
  17. typedef long long ll;
  18. typedef unsigned long long ull;
  19. typedef  double ld;
  20. #define sqrt sqrtl
  21. #define endl "\n"
  22. #define all(a) a.begin(), a.end()
  23. //const ll inf = 1e9;
  24. long double eps = 1e-18;
  25. //#define INF 10;7y,sizeof x)
  26. typedef pair<ll, ll> pi;
  27. typedef vector<pi> vii;
  28. #define map map
  29. #define pi 3.141592654
  30. #define T while(t--)
  31. #define pb push_back
  32. #define pf push_front
  33. #define mp make_pair
  34. #define ff first
  35. #define ss second
  36. #define si set<ll>
  37. #define se multiset<ll>
  38. //int m = 1e10 + 7;
  39. //int b = 27;
  40. /*istream& operator >> (istream& in, vector <T>& a) {
  41.     fro(T & i:a) in >> i;
  42.     return in;
  43. }
  44. template <typename T>
  45. ostream& operator << (istream& out, vector <T>& a) {
  46.     for (T& i : a) {
  47.         out < i << " ";
  48.     }
  49.     return out << ;
  50. }
  51. void do_h(string & s, vector <ll>&h, vector <ll>&p) {
  52.     ll n = s.size(), i, j;
  53.     h[0] = 0;
  54.     p[0] = 1;
  55.     for (i = 0; i < n; i++) {
  56.         h[i + 1] = (h[i] * b + (s[i] - 'a' + 1)) % m;
  57.         p[i + 1] = (p[i] * b) % m;
  58.     }
  59. }*/
  60. /*ll get_h(ll l, ll r, vector <ll>&h, vector <ll>&p) {
  61.     return h[r + 1] - (h[l] * p[r - l + 1]) % m;
  62. }*/
  63. ll rup(ll ik, ll ikk) {
  64.  
  65.     if (ik % ikk == 0) return ik / ikk;
  66.     else return (ik / ikk) + 1;
  67.  
  68. }
  69. ll gcd(ll a, ll b) {
  70.     if (b == 0) return a;
  71.     return gcd(b, a % b);
  72. }
  73. ll lcm(ll a, ll b) {
  74.     return (a * b) / gcd(a, b);
  75. }
  76. ll modpow(ll x, ll n, ll m) {
  77.     if (n == 0) return 1 % m;
  78.     long long u = modpow(x, n / 2, m);
  79.     u = (u * u) % m;
  80.     if (n % 2 == 1) u = (u * x) % m;
  81.     return u;
  82.  
  83. }
  84. ll nm(ll a, ll b) {
  85.     return (b + (a % b)) % b;
  86. }
  87. ld a, b, c, d;
  88. ld f(ld x) {
  89.     return a * x * x * x + b * x * x + c * x + d;
  90. }
  91. bool cmp(ld x, ld x1) {
  92.     return fabs(x - x1) < eps;
  93. }
  94. signed main() {
  95.     ios_base::sync_with_stdio(false);
  96.     cin.tie(NULL);
  97.     cout.tie(NULL);
  98.     cout << fixed<<setprecision(6);
  99.     vector<ld>ans;
  100.     cin >> a >> b >> c >> d;
  101.     if (abs(a)<eps && abs(b)<eps) {
  102.         cout << -d / c;
  103.         return 0;
  104.     }
  105.     if (abs(a)<eps ) {
  106.         a = b;
  107.         b = c;
  108.         c = d;
  109.         ld diz1 = pow(b, 2) - 4 * a * c;
  110.             if (abs(a) > eps && diz1 > eps)
  111.             {
  112.                 ld x11 = (-b + sqrt(diz1)) / (2 * a);
  113.                 ld x22 = (-b - sqrt(diz1)) / (2 * a);
  114.                 if (x11 > x22) cout << x22 << " " << x11;
  115.                 else cout << x11 << " " << x22;
  116.             }
  117.             else
  118.                 if (abs(a) > eps && abs(diz1) < eps) {
  119.                     ld x11 = -b / 2 * a;
  120.                     cout << x11;
  121.                 }
  122.             return 0;
  123.        
  124.     }
  125.     ld r = 1001.0;
  126.     ld l = -1001.0;
  127.     if (a < -eps) {
  128.         a = -a;
  129.         b = -b;
  130.         c = -c;
  131.         d = -d;
  132.     }
  133.     for (int i = 0; i < 200; i++) {
  134.         ld x = (l + r) / 2;
  135.         if (f(x) < 0)l = x;
  136.         else r = x;
  137.     }
  138.     ld x1 = (l + r) / 2;
  139.     a = a;
  140.     b = a * x1 + b;
  141.     c = b * x1 + c;
  142.     ans.pb(x1);
  143.     ld x2, x3;
  144.     ld diz = pow(b, 2) - 4 * a * c;
  145.     if (abs(a) < eps && abs(b) > eps && abs(c) > eps)
  146.     {
  147.         x2 = -c / b;
  148.         ans.push_back(x2);
  149.     }
  150.     if (abs(a) > eps && abs(b) > eps && abs(c) > eps) {
  151.         if (abs(a) > eps && diz > eps)
  152.         {
  153.             x2 = (-b + sqrt(diz)) / (2 * a);
  154.             x3 = (-b - sqrt(diz)) / (2 * a);
  155.             ans.push_back(x3);
  156.             ans.push_back(x2);
  157.         }
  158.         else
  159.             if (abs(a) > eps && abs(diz) < eps) {
  160.                 x2 = -b / 2 * a;
  161.                 ans.push_back(x2);
  162.             }
  163.     }
  164.     sort(all(ans));
  165.     cout << ans[0] << " ";
  166.     for (int i = 1; i < ans.size(); i++) {
  167.         if (ans[i ] - ans[i-1] < eps)continue;
  168.         else cout << ans[i] <<" ";
  169.     }
  170.  
  171.     return 0;
  172. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement