唯物是真 @Scaled_Wurm

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

TopCoder SRM 612 Div2 oox 1097->1211

14th, 735.75pts, +2/0 challenge
Volatility ?->394

前回-25ptsを取ってDiv2に落ちたのですが、よい順位をとれたのでDiv1に復帰できました。

250: LeftAndRightHandedDiv2

右利きの人と左利きの人が連続した椅子に座っている。
右利きの人の左側に左利きの人がいると肘がぶつかってしまう。
肘がぶつかってしまうペアの数を答える。

入力から'RL'(右左)の順に並んでいる箇所を数えるだけ。

class LeftAndRightHandedDiv2:
    def count(self, S):
        return S.count('RL')

500: EmoticonsDiv2

ある到達目標の顔文字数が与えられる。
顔文字数1からスタートして、現在の文字列をクリップボードにコピー、現在の文字列にクリップボードの文字列を足す、の2つの操作が可能な時、最小で何回の操作で目的の顔文字数に到達するかを求める。

到達目標の顔文字数を素因数分解っぽく割っていって、割るのに使った素数の値の総和が操作の回数になります

  • \(1000 = 2^3\times5^3\)なら操作回数は\(2 \times 3 + 5 \times 3 = 21\)
class EmoticonsDiv2:
    def printSmiles(self, smiles):
        count = 0
        for i in xrange(2, smiles + 1):
            while smiles % i == 0:
                count += i
                smiles /= i
        return count