#include #include #include #include #include using namespace std; template T pNorm(const complex& z) { return pow(pow(abs(z.real()), p) + pow(abs(z.imag()), p), static_cast(1) / p); } template&) = pNorm> class complex_norm : public complex { public: complex_norm(T real_, T imag_): complex(real_, imag_) {} T norm() const { return _norm(*this); } }; template using complex_pnorm = complex_norm>; int main() { complex_pnorm z1{1, 1}; complex_pnorm z2{1, 1}; double bound = z1.norm() / z2.norm(); cout << setprecision(numeric_limits::digits10 + 1) << boolalpha; cout << bound << endl; double real_, imag_; while (true) { cout << "real, imag = "; if (!(cin >> real_ >> imag_)) break; z1 = complex_pnorm{real_, imag_}; z2 = complex_pnorm{real_, imag_}; double val = z1.norm() / z2.norm(); cout << val << " " << (val <= bound) << endl; } }