[Python


9週目その他のアルゴリズム-3/5
1016平方
1-2年前に間違えた問題がやっと解けた.ははは
import sys
input = sys.stdin.readline
MIN, MAX = map(int, input().split())
array = [True] * (MAX-MIN+1) # 주의
count = 0
n = 2
while n * n <= MAX:
    square = n*n
    j = MIN // square
    while square *j <= MAX:
        index = square * j -MIN
        if index >= 0 and array[index]:
            count +=1
            array[index] = False
        j+=1
    n+=1
print(MAX-MIN+1-count)
に注意
array = [True for i in range(MAX+1)]
MAXの最大値は10000000+10000000であるため、メモリオーバーフローが発生する可能性があります.
4948ベルトラン姫
import sys
import math
input = sys.stdin.readline
primeNo = [True for i in range(246913)]
for i in range(2, 246913):
        if primeNo[i] == True:
            j = 2
            while i * j <= 246912:
                primeNo[i * j] = False
                j += 1
while True:
    n = int(input())
    if n==0:
        break
    ans = 0
    for i in range(n+1, 2*n + 1):
        if primeNo[i]:
            ans += 1
    print(ans)
に注意
各入力に新しい小数点がある場合はタイムアウトします
17390これは必ず解け!
import sys
input = sys.stdin.readline
n, m = map(int, input().split())
array = list(map(int, input().split()))
array.sort()
arrSum = [0]*(n+1)
for i in range(n):
    arrSum[i]=arrSum[i-1]+array[i]
for i in range(m):
    l, r = map(int, input().split())
    print(arrSum[r-1]-arrSum[l-2])