第1週のテーマ2 Flyme to the Alpha Centauri
1628 ワード
質問リンク
リンクテキスト
計画と思考
延伸と収縮はそれぞれ1つしかないので、最後は1で終わらなければならないので、現在の距離を基準に、次の移動を求める光年が+1か+0か、-1日を求める式を生成します.
残距離は(現在値+1)+(現在値)+(現在値-1)+.+1以上の場合、光年+1を移動し、(現在値)+(現在値-1)+.+より小さくなります.1以上の場合は現在の移動光年を維持し、その他の場合-1の場合は移動すると合計何回かします.
に答える
def fly(start, end):
distance = end -start
current_jump_dist = 1
jump_count = 1
distance = distance - current_jump_dist
while distance != 0:
if current_jump_dist % 2 == 1:
factory_sum = (current_jump_dist +1 ) * (current_jump_dist // 2) + (current_jump_dist + 1) / 2
else:
factory_sum = (current_jump_dist + 1) * (current_jump_dist // 2)
upper_current = current_jump_dist + 1
lower_current = current_jump_dist - 1
if distance >= factory_sum + upper_current:
current_jump_dist = upper_current
elif distance >= factory_sum :
current_jump_dist = current_jump_dist
else:
current_jump_dist = lower_current
distance = distance - current_jump_dist
jump_count += 1
return jump_count
output_array=[]
num_loop=int(input())
for num in range(num_loop):
start,end=map(int,input().split())
output_array.append(fly(start,end))
for num in range(num_loop):
print(output_array[num])
説明するときに出会う困難と苦悩.
factory sum計算式にはカッコがなく、結果が異なる点.pythonバージョンに従って入力します.split()は正常に使用されていない問題です.+1,0,1を判断する条件文では,=の有無によって変化する結果である.
釈義後に知る概念と感想
1行1行減らす方法はコード上のほうがいいですか、それともコード上のほうがいいですか.for文はよく見えるが,結果は時間的複雑度がO(n)であり,逆に計算式を用意すればO(1)の方が簡単である.
Reference
この問題について(第1週のテーマ2 Flyme to the Alpha Centauri), 我々は、より多くの情報をここで見つけました https://velog.io/@cjf1230/1주차과제2Fly-me-to-the-Alpha-Centauriテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol