Codeforces 394(#231 Div1) A. Counting Sticks
問題
|||+||=|||||のようなマッチ棒を使った式が文字列で与えられる。
A+B=C(A, B, C > 0)のときに正しい式である。
誤っているかもしれない式が与えられるので、棒を一本動かして正しい式に出来るならその式を、そうでないならImpossibleを出力せよ。
+, =の棒は動かしてはならない。
制約条件
A, B, C≦100とか
方針
a[] = {A, B, C}として、a[i]からa[j]に一本動かしてみるというのを全通り試せばいい。
ソースコード
int main(){ string s; cin >> s; rep(i, s.size()) if(s[i] == '+' || s[i] == '=') s[i] = ' '; stringstream ss(s); int a[3]; rep(i, 3) ss >> s, a[i] = s.size(); rep(i, 3) rep(j, 3){ a[i]--; a[j]++; if(a[0] + a[1] == a[2] && a[0] > 0 && a[1] > 0 && a[2] > 0){ cout << string(a[0], '|') << "+" << string(a[1], '|') << "=" << string(a[2], '|') << endl; return 0; } a[i]++; a[j]--; } cout << "Impossible" << endl; return 0; }