スポンサーリンク

【Python】AtCoder Beginner Contest 033(ABC033) A,C問題 解答・解説

スポンサーリンク
スポンサーリンク
この記事は約2分で読めます。

A問題 暗証番号

 

C問題 数式の書き換え

方針

次の条件を満たす数式があります。

  • 演算子は + (加算) と * (乗算) のみからなる。乗算を優先して計算する。
  • 括弧は存在しない。
  • それぞれの項は、 1 桁の整数である

数式の計算結果を0にするために、最低で何回書き換えが必要かを調べる問題です。

 

入力例2を見てみます。→ 3*1+1*2

計算結果を0にするためには3,1のどちらかと、1,2のどちらかを0に書き換えれば良いので答えは2になります。

次の数式を見てみます。→1+0+3+4

計算結果を0にするためには1,3,4を0に書き換えれば良いので答えは3になります。

以上を踏まえて、+を境目にして項を分けて、各項の計算結果を0にするために書き換えれば良い回数を数えることにしました。

*が含まれる項はいくら数字があったとしても、どれか1つだけでも0があれば良いです。

3*1+1*2→[3*1, 1*2]

1+0+3+4→[1, 0, 3, 4]

1*2*3*4*5+2+3→[1*2*3*4*5, 2 ,3]

解答①

解答②

なんと1行だけで正解している解答がありました。

入力時にsplit関数で+を指定して分割して、0を含まない項の数を数えると一発で正解でした。

提出 #28658732 – AtCoder Beginner Contest 033

コメント