//将所有变量和常量都移到等式左边,得到aX^2+bX+c=0,在用公式做
#include "stdio.h"
#include "math.h"
#include "string"
#include "iostream"
#include "algorithm"
using namespace std;
string str;
int calculate(int pos){//计算x^2,x前的数字(num1,num2)的位数
int count = 0;
for (int i = pos-1; i >= 0; --i) {
if (str[i] >= '0' && str[i] <= '9'){
++count;
continue;
} else
break;
}
++count;
return count;
}
int calculate2(int pos){//计算普通数字num3的位数
int count = 0;
for (int i = pos; str[i] >= '0' && str[i] <= '9'; ++i) {
++count;
}
return count;
}
int main(){
;int sum1=0,sum2=0,sum3=0;//sum1为x^2系数,sum2为x系数,sum3为常数(都移到方程左侧)
while (getline(cin,str)){
/*
* 对str初始化,对x,x^2变成1x,1x^2,开头的再变成+/-1x,+/-x^2,相当于规格化,便于后续处理
*/
for (int i = 0; i < str.size(); ++i) {//加1
if (str[i] == 'x'){
if (str[i-1] == '+' || str[i-1] == '-' || str[i-1] == '=' || i==0){
str.insert(i,"1");
continue;
}
}
if (str[i] > '0' && str[i] <= '9'){
if (str[i-1] == '=' || i == 0){
str.insert(i,"+");
continue;
}
}
}
if (str[1] == 'x')//加"+"
str.insert(0,"+");
int pos_equal = str.find("=");
if (str[pos_equal+2] == 'x')
str.insert(pos_equal+1,"+");
while (str.find("x^2")!=string::npos){//算出sum1 ->a
int pos = str.find("x^2");
int count = calculate(pos);
if (pos < pos_equal){
sum1 += stoi(str.substr(pos-count,count));
str.erase(pos-count,count+3);
} else{
sum1 -= stoi(str.substr(pos-count,count));
str.erase(pos-count,count+3);
}
pos_equal = str.find("=");
}
while (str.find("x") != string::npos){//算sum2 ->b
int pos = str.find("x");
int count = calculate(pos);
if (pos < pos_equal){
sum2 += stoi(str.substr(pos-count,count));
str.erase(pos-count,count+1);
} else{
sum2 -= stoi(str.substr(pos-count,count));
str.erase(pos-count,count+1);
}
pos_equal = str.find("=");
}
for (int i = 0; i < str.size(); ++i) {//算num3
if (str[i] > '0' && str[i] <= '9'){
int count = calculate2(i);
if (i < pos_equal){
sum3 += stoi(str.substr(i-1,count+1));
str.erase(i-1,count+1);
} else{
sum3 -= stoi(str.substr(i-1,count+1));
str.erase(i-1,count+1);
}
pos_equal = str.find("=");
}
}
double temp = sum2*sum2*1.0-4*sum1*sum3;
if (temp<0)
printf("No Solution\n");
else{
double x = (-sum2 - sqrt(temp))/(2*sum1);
double y = (-sum2 + sqrt(temp))/(2*sum1);
if (x > y)
swap(x,y);
printf("%.2llf %.2llf\n",x,y);
}
}
}