[韓国情報オリンピア](python)K番目の約数
716 ワード
説明する
n,k = map(int,input().split())
answer = []
for i in range(1,n+1):
if n % i == 0:
answer.append(i)
if len(answer) > k:
print(answer[k-1])
else: #for문이 정상적으로 끝났다면 else로 안 옴. 거짓일 때만 else로
print(-1)
+++k番目の数字を出力するだけでいいです.
最後に回ってから滑るので、効率的にはよく感じません.
別の解釈
n,k = map(int,input().split())
answer = 0
for i in range(1,n+1):
if n % i == 0:
answer += 1
if answer == k: # 슬라이싱 말고 발견하면 그냥 출력
print(i)
break
else:
print(-1)
+++K番目の数字にしか回らないので、ずっと速いと思います.
Reference
この問題について([韓国情報オリンピア](python)K番目の約数), 我々は、より多くの情報をここで見つけました https://velog.io/@richeberry/한국정보올림피아드python-K번째-약수テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol