[伯俊]噴水1193号を探して


スコア1193を検索

コード#コード#

def whereisX(x):
    n, tmp = 0, 0
    while True:
        an = (n**2 + n + 2) // 2
        if tmp <= x < an:
            return [n, x-tmp]
            break
        n += 1
        tmp = an

x = int(input())
list = whereisX(x)
level = list.pop(0)
distance = list.pop(0)
if level % 2 == 1:
    print(str(level-distance) + "/" + str(distance+1))
else:
    print(str(distance+1) + "/" + str(level-distance))

コメント




1
2 3
4 5 6
7 8 9 10
11 12 13 14 15 16
~>階段の形であることがわかります.
1 2 4 7 11 ..
列を数える
an = (n**2 + n + 2)/2
数字は
  • inputなので、xの階段位置(level)を知ることが重要だと思います
  • の前の数字1 2 4 7 11はカウント列であることを知っていて、その一般的な項目を検索して、その
  • を見つけます.
  • def wheresX()処理
  • 関数処理中に分母分子を決定するには、どの程度のレベル(距離)が必要ですか?
  • 関数返却部をlistとして処理し、2つの関数
  • を返すことができる.
  • levelパリティ
  • を処理する必要があります
  • ウェル数分子は54321式で小さくなり、偶数は1234式で
  • 大きくなる.

    所要時間:75分