#include <iostream>
#include <cmath>
using namespace std;
class polynominal {
    int a,b,c;
    public:
    polynominal(int a,int b,int c) : a(a),b(b),c(c) {}
    void Write() {//перший метод
        if ((b>=0) and (c>=0)) {
            cout<<a<<"x²+"<<b<<"x+"<<c<<endl;
        }
        else {
        	if ((b<0) and (c>=0)) {
        		cout<<a<<"x²"<<b<<"x+"<<c<<endl;
        	}
        	else {
        		if ((b>=0) and (c<0)) {
        			cout<<a<<"x²+"<<b<<"x"<<c<<endl;
        		}
        		else {
        			cout<<a<<"x²"<<b<<"x"<<c<<endl;
        		}
        	}
        }
    }
    double Solve() {//другий метод
    	if ((b*b<=4*a*c) or (a==0)) {
    		cout<<"no real solution"<<endl;
    		return 0;
    	}
    	else {
    		double x,y;
    		x=(-b+sqrt(b*b-4*a*c))/(2*a);
    		cout<<x<<endl;
    		y=(-b-sqrt(b*b-4*a*c))/(2*a);
    		cout<<y<<endl;
    		return x;
    	}
    }
    void form() {//третій метод
    	if ((b*b<=4*a*c) or (a==0)) {
    		cout<<"cannot form because no real roots"<<endl;
    	}
    	else {
    		double x,y;
    		x=(-b+sqrt(b*b-4*a*c))/(2*a);
    		y=(-b-sqrt(b*b-4*a*c))/(2*a);
    		if ((x>=0) and (y>=0)) {
    		    cout<<a<<"(x-"<<x<<")(x-"<<y<<")"<<endl;
    		}
    		else {
    			if ((x<0) and (y>=0)) {
    				cout<<a<<"(x+"<<abs(x)<<")(x-"<<y<<")"<<endl;
    			}
    			else {
    				if ((x>=0) and (y<0)) {
    					cout<<a<<"(x-"<<x<<")(x+"<<abs(y)<<")"<<endl;
    				}
    				else {
    					cout<<a<<"(x+"<<abs(x)<<")(x+"<<abs(y)<<")"<<endl;
    				}
    			}
    		}
    	}
    }
};
int main() {
	polynominal p(3,4,6),f(0,5,2),g(3,4,-6);
    p.Write();
    p.Solve();
    p.form();
    f.Write();
    f.Solve();
    f.form();
    g.Write();
    g.Solve();
    g.form();
	return 0;
}