#include #include #include #include using namespace std; typedef long double real; struct complex { real re, im; complex(real r = 0, real i = 0) : re(r), im(i) { } complex(const complex &z) { re = z.re; im = z.im; } complex& operator= (const complex &z) { re = z.re; im = z.im; } bool operator== (const complex &z) const { return re == z.re && im == z.im; } bool operator!= (const complex &z) const { return re != z.re || im != z.im; } complex& operator+= (const complex &z) { re += z.re; im += z.im; } complex operator+ (const complex &z) const { complex result(*this); return result += z; } complex operator+() const { return *this; } complex& operator-= (const complex &z) { re -= z.re; im -= z.im; } complex operator- (const complex &z) const { complex result(*this); return result -= z; } complex operator-() const { return complex(-re, -im); } complex operator* (const complex &z) const { return complex(re*z.re - im*z.im, re*z.im + im*z.re); } complex& operator*= (const complex &z) { return *this = *this*z; } complex operator/ (const complex &z) const { real t = 1/(z.re*z.re + z.im*z.im); return complex((re*z.re + im*z.im)*t, (im*z.re - re*z.im)*t); } complex& operator/= (const complex &z) { return *this = *this/z; } real modulus2() const { return re*re + im*im; } real modulus() const { return sqrt(modulus2()); } }; int main() { real e = 1e-5; complex z(-0.75, e), c(z); int n = 0; while (true) { complex z1; z1 = z*z + c; if (z1.re*z1.re + z.im*z.im >= 4) { break; } z = z1; ++n; } cout << setprecision(20) << n*e << endl; return EXIT_SUCCESS; }