BOJ 1016平方ㄴ数
4439 ワード
質問する
BOJ 1016平方ㄴ数
金色1|白駿1016|Python 3糸草
アルゴリズム#アルゴリズム#
i
)j
排水を作るための変数(i * i * j
賈MAX
それ以下まで)i * i * j
インデックス範囲内であればアクセスをチェックし、世紀を数える(len(a) - count)
1)エラトネスの体を使わなければ→タイムアウト
2)テストステロンのふるいを使う→数字を含むリストを作成するか、リストの長さを0からMAXまでメモリを超える
3)リストを使用し、エラトネスのボディを使用する必要があります
4)アクセスチェックが必要であり,インデックス範囲を調整してチェックする必要がある(N~M+1)
→範囲を調整しないとタイムアウト
5)Cシリーズは
int
範囲外なので使用long long
タイプコード#コード#
import sys
input = sys.stdin.readline
N, M = map(int, input().split())
# 에라토스테네스의 체 (소수면 True)
a = [True for _ in range(M - N + 1)]
count = 0
i = 1
# 에라토스테네스의 체
while i * i <= M:
i += 1
j = N // (i * i)
while i * i * j <= M:
# i^2의 배수
sq = i * i * j
if sq >= N:
if a[sq - N]:
count += 1
# 소수가 아니므로 체크
a[sq - N] = False
j += 1
print(len(a) - count)
結果
基本的な考え方は簡単ですが(エストラジオールを適用)
インデックス範囲を再調整してタイムアウトとメモリオーバーフローを削減
→メモリ消費量がより速く、より少ないミラー・ロビンの使用
Reference
この問題について(BOJ 1016平方ㄴ数), 我々は、より多くの情報をここで見つけました https://velog.io/@leehe228/boj1016テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol