ABC-C の最易候補! ビット全探索でもいいが、8 通りだけなので if 文の羅列でも OK。
問題概要
4 つの整数 が与えられる。
□
□
□
= 7
となるように、□ に + または - を入れよ。
制約
考えたこと
□ は 3 個ある。それぞれに「+」と「-」の 2 通りずつの演算子の入れ方があるので、計算式として考えられるものは
通り
ある。これらをすべて試して、7 になるものを探せば良い。具体的な式については、下のコードを参照。
コード
#include <bits/stdc++.h> using namespace std; int main() { string ABCD; cin >> ABCD; int A = ABCD[0] - '0', B = ABCD[1] - '0', C = ABCD[2] - '0', D = ABCD[3] - '0'; string operators = ""; if (A + B + C + D == 7) operators = "+++"; else if (A + B + C - D == 7) operators = "++-"; else if (A + B - C + D == 7) operators = "+-+"; else if (A + B - C - D == 7) operators = "+--"; else if (A - B + C + D == 7) operators = "-++"; else if (A - B + C - D == 7) operators = "-+-"; else if (A - B - C + D == 7) operators = "--+"; else if (A - B - C - D == 7) operators = "---"; cout << A << operators[0] << B << operators[1] << C << operators[2] << D << "=7" << endl; }