結果

問題 No.3024 等式
ユーザー ei1333333ei1333333
提出日時 2017-04-01 00:35:29
言語 Ruby
(3.3.0)
結果
RE  
実行時間 -
コード長 1,015 bytes
コンパイル時間 52 ms
コンパイル使用メモリ 11,260 KB
実行使用メモリ 15,608 KB
最終ジャッジ日時 2023-09-21 21:04:03
合計ジャッジ時間 4,052 ms
ジャッジサーバーID
(参考情報)
judge14 / judge15
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 RE -
testcase_01 RE -
testcase_02 RE -
testcase_03 RE -
testcase_04 RE -
testcase_05 RE -
testcase_06 RE -
testcase_07 RE -
testcase_08 RE -
testcase_09 RE -
testcase_10 RE -
testcase_11 RE -
testcase_12 RE -
testcase_13 RE -
testcase_14 RE -
testcase_15 RE -
testcase_16 RE -
testcase_17 RE -
testcase_18 RE -
testcase_19 RE -
testcase_20 RE -
testcase_21 RE -
testcase_22 RE -
権限があれば一括ダウンロードができます
コンパイルメッセージ
Syntax OK

ソースコード

diff #

# Here your code !

require "mathn"

OPERATORS=[ "+", "\\-", "*", "/", "_" ]

EXPRESSIONS=%w[
  AxByCzD    ((AxB)yC)zD    (AxB)y(CzD)    
  (Ax(ByC))zD    Ax((ByC)zD)    Ax(By(CzD))
]

def solve( *nums0 )
  nums0.permutation(nums0.size) do |nums|
    OPERATORS.repeated_permutation(nums0.length-1).each do |ops|
      EXPRESSIONS.each do |exp|
        begin
          yield eval(exp.tr( "ABCDxyz", (nums+ops).join ))
        rescue SyntaxError, ZeroDivisionError
        end
      end
    end
  end
end

n = gets.to_i
a = gets.split.map{|m|m.to_i}

S = 1 << n
flag = false
S.times do |bit|
    x = []
    y = []
    c = 0
    d = 0
    n.times do |s|
        if (bit >> s).to_i % 2 == 0
            x.push(a[s])
            c += 1
        else
            y.push(a[s])
            d += 1;
        end
    end
    if c > 0 and d > 0
        if !(enum_for(:solve, x).to_a - enum_for(:solve, y).to_a).empty? and !flag
            puts("YES")
            flag = true
        end
    end
end

if !flag
    puts("NO")
end
0