唯物是真 @Scaled_Wurm

プログラミング(主にPython2.7)とか機械学習とか

TopCoder SRM 620 Div1 x-- 1268->1207

743th, 0pts, +0/0 challenge
Volatility 345->336

ケアレスミスによって0点orz
Div1の問題は解けない運命なのですね(違

250: PairGame

2つの正の整数のペア\( (a,b), (c,d) \)が与えられる。
ある正の整数のペア\( (x,y) \)から始めて、ペアの要素の片方にもう片方の値を足す操作\( (x, x+y), (x+y, y) \) が好きな回数だけ行える時\( (a,b), (c,d) \)の両方に到達可能な最大の\(x+y\)を答える

ペア\( (a,b), (c,d) \)それぞれについてユークリッドの互除法みたいに大きい方から小さい方を引く操作を繰り返して、ありうるペアを列挙してから最大のものを求めればよい

初期化の時にsetのコンストラクタに間違えてペアを表しているタプルを与えてしまい、タプルのそれぞれの要素がsetに登録されてしまって、\( (a,b)\)が答えになる時に失敗するという残念なミスで間違えた

class PairGame:
    def maxSum(self, a, b, c, d):
        temp_a = [a, b]
        temp_b = [c, d]
        
        check = set([tuple(temp_a)])
        while max(temp_a) != 1 and temp_a[0] != temp_a[1]:
            if temp_a[0] < temp_a[1]:
                temp_a[1] = temp_a[1] - temp_a[0]
            else:
                temp_a[0] = temp_a[0] - temp_a[1]
            check.add(tuple(temp_a))
        if tuple(temp_b) in check:
            return temp_b[0] + temp_b[1]
        while max(temp_b) != 1 and temp_b[0] != temp_b[1]:
            if temp_b[0] < temp_b[1]:
                temp_b[1] = temp_b[1] - temp_b[0]
            else:
                temp_b[0] = temp_b[0] - temp_b[1]
            if tuple(temp_b) in check:
                return temp_b[0] + temp_b[1]
        return -1