시간 제한메모리 제한제출정답맞힌 사람정답 비율
1 초 128 MB196763436.957%

문제

변수가 한 개인 일차 방정식이 주어졌을 때, 해를 구하는 프로그램을 작성하시오.

입력

입력을 여러 개의 방정식으로 이루어져 있다. 방정식은 한 줄에 하나씩 주어진다.

방정식은 모두 100글자 이내이며, 아래와 같은 문법을 따른다. (EBNF 문법)

Equation   := Expression '=' Expression
Expression := Term { ('+' | '-') Term }
Term       := Factor { '*' Factor }
Factor     := Number | 'x' | '(' Expression ')'
Number     := Digit | Digit Number
Digit      := '0' | '1' | ... | '9'

위의 문법에 따르면, x*x = 25와 같은 일차방정식이 아닌 식을 만들 수 있다. 하지만, 항상 x에 대해서 일차인 식만 주어진다. 또, 방정식의 부분식도 항상 일차이다. 즉, x*x-x*x+x = 0과 같은 식은 주어지지 않는다. (x*x는 일차식이 아니다)

입력으로 주어지는 숫자는 모두 음이 아닌 정수이다. 또, x는 실수이다.

출력

각 테스트 케이스에 대해서, "Equation #i" (i는 테스트 케이스 번호)를 출력한 다음, 아래 세 가지 중 하나를 출력한다.

방정식이 해가 없다면, "No solution."을 출력한다.
방정식의 해가 무수히 많다면, "Infinitely many solutions."을 출력한다.
방정식의 해가 하나라면, "x = solution"을 출력하며, solution은 소수점 여섯째 자리까지 출력한다.

각 테스트 케이스 사이에는 빈 줄을 하나 출력한다.

예제 입력 1

x+x+x=10
4*x+2=19
3*x=3*x+1+2+3
(42-6*7)*x=2*5-10

예제 출력 1

Equation #1
x = 3.333333

Equation #2
x = 4.250000

Equation #3
No solution.

Equation #4
Infinitely many solutions.
W3sicHJvYmxlbV9pZCI6IjY1OTQiLCJwcm9ibGVtX2xhbmciOiIwIiwidGl0bGUiOiJcdWJjMjlcdWM4MTVcdWMyZGQgXHVkNDgwXHVjNzc0IiwiZGVzY3JpcHRpb24iOiI8cD5cdWJjYzBcdWMyMThcdWFjMDAgXHVkNTVjIFx1YWMxY1x1Yzc3OCBcdWM3N2NcdWNjMjggXHViYzI5XHVjODE1XHVjMmRkXHVjNzc0IFx1YzhmY1x1YzViNFx1Yzg0Y1x1Yzc0NCBcdWI1NGMsIFx1ZDU3NFx1Yjk3YyBcdWFkNmNcdWQ1NThcdWIyOTQgXHVkNTA0XHViODVjXHVhZGY4XHViN2E4XHVjNzQ0IFx1Yzc5MVx1YzEzMVx1ZDU1OFx1YzJkY1x1YzYyNC48XC9wPlxyXG4iLCJpbnB1dCI6IjxwPlx1Yzc4NVx1YjgyNVx1Yzc0NCBcdWM1ZWNcdWI3ZWMgXHVhYzFjXHVjNzU4IFx1YmMyOVx1YzgxNVx1YzJkZFx1YzczY1x1Yjg1YyBcdWM3NzRcdWI4ZThcdWM1YjRcdWM4MzggXHVjNzg4XHViMmU0LiBcdWJjMjlcdWM4MTVcdWMyZGRcdWM3NDAgXHVkNTVjIFx1YzkwNFx1YzVkMCBcdWQ1NThcdWIwOThcdWM1MjkgXHVjOGZjXHVjNWI0XHVjOWM0XHViMmU0LjxcL3A+XHJcblxyXG48cD5cdWJjMjlcdWM4MTVcdWMyZGRcdWM3NDAgXHViYWE4XHViNDUwIDEwMFx1YWUwMFx1Yzc5MCBcdWM3NzRcdWIwYjRcdWM3NzRcdWJhNzAsIFx1YzU0NFx1Yjc5OFx1YzY0MCBcdWFjMTlcdWM3NDAgXHViYjM4XHViYzk1XHVjNzQ0IFx1YjUzMFx1Yjk3OFx1YjJlNC4gKEVCTkYgXHViYjM4XHViYzk1KTxcL3A+XHJcblxyXG48cHJlPlxyXG5FcXVhdGlvbiAgIDo9IEV4cHJlc3Npb24gJiMzOTs9JiMzOTsgRXhwcmVzc2lvblxyXG5FeHByZXNzaW9uIDo9IFRlcm0geyAoJiMzOTsrJiMzOTsgfCAmIzM5Oy0mIzM5OykgVGVybSB9XHJcblRlcm0gICAgICAgOj0gRmFjdG9yIHsgJiMzOTsqJiMzOTsgRmFjdG9yIH1cclxuRmFjdG9yICAgICA6PSBOdW1iZXIgfCAmIzM5O3gmIzM5OyB8ICYjMzk7KCYjMzk7IEV4cHJlc3Npb24gJiMzOTspJiMzOTtcclxuTnVtYmVyICAgICA6PSBEaWdpdCB8IERpZ2l0IE51bWJlclxyXG5EaWdpdCAgICAgIDo9ICYjMzk7MCYjMzk7IHwgJiMzOTsxJiMzOTsgfCAuLi4gfCAmIzM5OzkmIzM5OzxcL3ByZT5cclxuXHJcbjxwPlx1YzcwNFx1Yzc1OCBcdWJiMzhcdWJjOTVcdWM1ZDAgXHViNTMwXHViOTc0XHViYTc0LCB4KnggPSAyNVx1YzY0MCBcdWFjMTlcdWM3NDAgXHVjNzdjXHVjYzI4XHViYzI5XHVjODE1XHVjMmRkXHVjNzc0IFx1YzU0NFx1YjJjYyBcdWMyZGRcdWM3NDQgXHViOWNjXHViNGU0IFx1YzIxOCBcdWM3ODhcdWIyZTQuIFx1ZDU1OFx1YzljMFx1YjljYywgXHVkNTZkXHVjMGMxIHhcdWM1ZDAgXHViMzAwXHVkNTc0XHVjMTFjIFx1Yzc3Y1x1Y2MyOFx1Yzc3OCBcdWMyZGRcdWI5Y2MgXHVjOGZjXHVjNWI0XHVjOWM0XHViMmU0LiBcdWI2MTAsJm5ic3A7XHViYzI5XHVjODE1XHVjMmRkXHVjNzU4IFx1YmQ4MFx1YmQ4NFx1YzJkZFx1YjNjNCBcdWQ1NmRcdWMwYzEgXHVjNzdjXHVjYzI4XHVjNzc0XHViMmU0LiBcdWM5ODksIHgqeC14KngreCA9IDBcdWFjZmMgXHVhYzE5XHVjNzQwIFx1YzJkZFx1Yzc0MCBcdWM4ZmNcdWM1YjRcdWM5YzBcdWM5YzAgXHVjNTRhXHViMjk0XHViMmU0LiAoeCp4XHViMjk0IFx1Yzc3Y1x1Y2MyOFx1YzJkZFx1Yzc3NCBcdWM1NDRcdWIyYzhcdWIyZTQpPFwvcD5cclxuXHJcbjxwPlx1Yzc4NVx1YjgyNVx1YzczY1x1Yjg1YyBcdWM4ZmNcdWM1YjRcdWM5YzBcdWIyOTQgXHVjMjJiXHVjNzkwXHViMjk0IFx1YmFhOFx1YjQ1MCBcdWM3NGNcdWM3NzQgXHVjNTQ0XHViMmNjIFx1YzgxNVx1YzIxOFx1Yzc3NFx1YjJlNC4gXHViNjEwLCB4XHViMjk0IFx1YzJlNFx1YzIxOFx1Yzc3NFx1YjJlNC48XC9wPlxyXG4iLCJvdXRwdXQiOiI8cD5cdWFjMDEgXHVkMTRjXHVjMmE0XHVkMmI4IFx1Y2YwMFx1Yzc3NFx1YzJhNFx1YzVkMCBcdWIzMDBcdWQ1NzRcdWMxMWMsICZxdW90O0VxdWF0aW9uICNpJnF1b3Q7IChpXHViMjk0IFx1ZDE0Y1x1YzJhNFx1ZDJiOCBcdWNmMDBcdWM3NzRcdWMyYTQgXHViYzg4XHVkNjM4KVx1Yjk3YyBcdWNkOWNcdWI4MjVcdWQ1NWMgXHViMmU0XHVjNzRjLCBcdWM1NDRcdWI3OTggXHVjMTM4IFx1YWMwMFx1YzljMCBcdWM5MTEgXHVkNTU4XHViMDk4XHViOTdjIFx1Y2Q5Y1x1YjgyNVx1ZDU1Y1x1YjJlNC48XC9wPlxyXG5cclxuPHA+XHViYzI5XHVjODE1XHVjMmRkXHVjNzc0IFx1ZDU3NFx1YWMwMCBcdWM1YzZcdWIyZTRcdWJhNzQsICZxdW90O05vIHNvbHV0aW9uLiZxdW90O1x1Yzc0NCBcdWNkOWNcdWI4MjVcdWQ1NWNcdWIyZTQuPGJyIFwvPlxyXG5cdWJjMjlcdWM4MTVcdWMyZGRcdWM3NTggXHVkNTc0XHVhYzAwIFx1YmIzNFx1YzIxOFx1ZDc4OCBcdWI5Y2VcdWIyZTRcdWJhNzQsICZxdW90O0luZmluaXRlbHkgbWFueSBzb2x1dGlvbnMuJnF1b3Q7XHVjNzQ0IFx1Y2Q5Y1x1YjgyNVx1ZDU1Y1x1YjJlNC48YnIgXC8+XHJcblx1YmMyOVx1YzgxNVx1YzJkZFx1Yzc1OCBcdWQ1NzRcdWFjMDAgXHVkNTU4XHViMDk4XHViNzdjXHViYTc0LCAmcXVvdDt4ID0gc29sdXRpb24mcXVvdDtcdWM3NDQgXHVjZDljXHViODI1XHVkNTU4XHViYTcwLCBzb2x1dGlvblx1Yzc0MCBcdWMxOGNcdWMyMThcdWM4MTAgXHVjNWVjXHVjMTJmXHVjOWY4IFx1Yzc5MFx1YjlhY1x1YWU0Y1x1YzljMCBcdWNkOWNcdWI4MjVcdWQ1NWNcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1YWMwMSBcdWQxNGNcdWMyYTRcdWQyYjggXHVjZjAwXHVjNzc0XHVjMmE0IFx1YzBhY1x1Yzc3NFx1YzVkMFx1YjI5NCBcdWJlNDggXHVjOTA0XHVjNzQ0IFx1ZDU1OFx1YjA5OCBcdWNkOWNcdWI4MjVcdWQ1NWNcdWIyZTQuPFwvcD5cclxuIiwiaGludCI6IiIsIm9yaWdpbmFsIjoiMCIsImh0bWxfdGl0bGUiOiIwIiwicHJvYmxlbV9sYW5nX3Rjb2RlIjoiS29yZWFuIn0seyJwcm9ibGVtX2lkIjoiNjU5NCIsInByb2JsZW1fbGFuZyI6IjEiLCJ0aXRsZSI6IkVxdWF0aW9uIFNvbHZlciIsImRlc2NyaXB0aW9uIjoiPHA+V3JpdGUgYSBwcm9ncmFtIHRoYXQgY2FuIHNvbHZlIGxpbmVhciBlcXVhdGlvbnMgd2l0aCBvbmUgdmFyaWFibGUuPFwvcD5cclxuIiwiaW5wdXQiOiI8cD5UaGUgaW5wdXQgZmlsZSB3aWxsIGNvbnRhaW4gYSBudW1iZXIgb2YgZXF1YXRpb25zLCBlYWNoIG9uZSBvbiBhIHNlcGFyYXRlIGxpbmUuIEFsbCBlcXVhdGlvbnMgYXJlIHN0cmluZ3Mgb2YgbGVzcyB0aGFuIDEwMCBjaGFyYWN0ZXJzIHdoaWNoIHN0cmljdGx5IGFkaGVyZSB0byB0aGUgZm9sbG93aW5nIGdyYW1tYXIgKGdpdmVuIGluIEVCTkYpOjxcL3A+XHJcblxyXG48cHJlPlxyXG5FcXVhdGlvbiAgIDo9IEV4cHJlc3Npb24gJiMzOTs9JiMzOTsgRXhwcmVzc2lvblxyXG5FeHByZXNzaW9uIDo9IFRlcm0geyAoJiMzOTsrJiMzOTsgfCAmIzM5Oy0mIzM5OykgVGVybSB9XHJcblRlcm0gICAgICAgOj0gRmFjdG9yIHsgJiMzOTsqJiMzOTsgRmFjdG9yIH1cclxuRmFjdG9yICAgICA6PSBOdW1iZXIgfCAmIzM5O3gmIzM5OyB8ICYjMzk7KCYjMzk7IEV4cHJlc3Npb24gJiMzOTspJiMzOTtcclxuTnVtYmVyICAgICA6PSBEaWdpdCB8IERpZ2l0IE51bWJlclxyXG5EaWdpdCAgICAgIDo9ICYjMzk7MCYjMzk7IHwgJiMzOTsxJiMzOTsgfCAuLi4gfCAmIzM5OzkmIzM5OzxcL3ByZT5cclxuXHJcbjxwPkFsdGhvdWdoIHRoZSBncmFtbWFyIHdvdWxkIGFsbG93IHRvIGNvbnN0cnVjdCBub24tbGluZWFyIGVxdWF0aW9ucyBsaWtlICZxdW90O3gqeD0yNSZxdW90Oywgd2UgZ3VhcmFudGVlIHRoYXQgYWxsIGVxdWF0aW9ucyBvY2N1cmluZyBpbiB0aGUgaW5wdXQgZmlsZSB3aWxsIGJlIGxpbmVhciBpbiB4LiBXZSBmdXJ0aGVyIGd1YXJhbnRlZSB0aGF0IGFsbCBzdWItZXhwcmVzc2lvbnMgb2YgYW4gZXF1YXRpb24gd2lsbCBiZSBsaW5lYXIgaW4geCB0b28uIFRoYXQgbWVhbnMsIHRoZXJlIHdvbiYjMzk7dCBiZSB0ZXN0IGNhc2VzIGxpa2UgeCp4LXgqeCt4PTAgd2hpY2ggaXMgYSBsaW5lYXIgZXF1YXRpb24gYnV0IGNvbnRhaW5zIG5vbi1saW5lYXIgc3ViLWV4cHJlc3Npb25zICh4KngpLiZuYnNwOzxcL3A+XHJcblxyXG48cD5Ob3RlIHRoYXQgYWxsIG51bWJlcnMgb2NjdXJpbmcgaW4gdGhlIGlucHV0IGFyZSBub24tbmVnYXRpdmUgaW50ZWdlcnMsIHdoaWxlIHRoZSBzb2x1dGlvbiBmb3IgeCBpcyBhIHJlYWwgbnVtYmVyLjxcL3A+XHJcbiIsIm91dHB1dCI6IjxwPkZvciBlYWNoIHRlc3QgY2FzZSwgcHJpbnQgYSBsaW5lIHNheWluZyAmcXVvdDtFcXVhdGlvbiAjaSAod2hlcmUgaSBpcyB0aGUgbnVtYmVyIG9mIHRoZSB0ZXN0IGNhc2UpIGFuZCBhIGxpbmUgd2l0aCBvbmUgb2YgdGhlIGZvbGxvd2luZyBhbnN3ZXJzOjxcL3A+XHJcblxyXG48dWw+XHJcblx0PGxpPklmIHRoZSBlcXVhdGlvbiBoYXMgbm8gc29sdXRpb24sIHByaW50ICZxdW90O05vIHNvbHV0aW9uLiZxdW90Oy48XC9saT5cclxuXHQ8bGk+SWYgdGhlIGVxdWF0aW9uIGhhcyBpbmZpbml0ZWx5IG1hbnkgc29sdXRpb25zLCBwcmludCAmcXVvdDtJbmZpbml0ZWx5IG1hbnkgc29sdXRpb25zLiZxdW90Oy48XC9saT5cclxuXHQ8bGk+SWYgdGhlIGVxdWF0aW9uIGhhcyBleGFjdGx5IG9uZSBzb2x1dGlvbiwgcHJpbnQgJnF1b3Q7eCA9IHNvbHV0aW9uJnF1b3Q7IHdoZXJlIHNvbHV0aW9uIGlzIHJlcGxhY2VkIGJ5IHRoZSBhcHByb3ByaWF0ZSByZWFsIG51bWJlciAocHJpbnRlZCB0byBzaXggZGVjaW1hbHMpLjxcL2xpPlxyXG48XC91bD5cclxuXHJcbjxwPlByaW50IGEgYmxhbmsgbGluZSBhZnRlciBlYWNoIHRlc3QgY2FzZS4mbmJzcDs8XC9wPlxyXG4iLCJoaW50IjoiIiwib3JpZ2luYWwiOiIxIiwiaHRtbF90aXRsZSI6IjAiLCJwcm9ibGVtX2xhbmdfdGNvZGUiOiJFbmdsaXNoIn1d