はまやんはまやんはまやん

hamayanhamayan's blog

Train Ticket [AtCoder Beginner Contest 079 C]

https://abc079.contest.atcoder.jp/tasks/abc079_c

解法

https://abc079.contest.atcoder.jp/submissions/1782951

全ての組合せを試す。
自分はビットマスクを使って実装した。
ビットで1が立っていれば"+", 立っていないなら"-"として計算していく。
合計が7となったらそれを答える。

string S;
//---------------------------------------------------------------------------------------------------
void _main() {
    cin >> S;
 
    rep(msk, 0, 1 << 3) {
        int sm = S[0] - '0';
        rep(i, 0, 3) {
            if (msk & (1 << i)) sm += S[i + 1] - '0';
            else sm -= S[i + 1] - '0';
        }
        if (sm == 7) {
            cout << S[0];
            rep(i, 0, 3) {
                if (msk & (1 << i)) cout << "+";
                else cout << "-";
                cout << S[i + 1];
            }
            cout << "=7" << endl;
            return;
        }
    }
}