problem-1300

ysysc·2022년 11월 21일
0

PS

목록 보기
28/47

과정
1. 숫자 num에 대하여, a[i][j]=i*j로 이루어진 행렬에서 num보다 작거나 같은 수의 개수는 sum(min(num//i,n))
2. 이걸 통해 해당 num보다 작거나 같은 수의 개수를 찾음
3. 개수가 k보다 크거나 같으면 저장하고 end=mid-1 || 작으면 start=mid+1 이분탐색


n=int(input())
k=int(input())
start,end=0,k
ans=0
while start<=end:
    mid=(start+end)//2
    temp=0
    for i in range(1,n+1):
        temp+=min(n,mid//i)
    if temp>=k:
        ans=mid
        end=mid-1
    else:
        start=mid+1

print(ans)
    

time:50분
resolved:x

0개의 댓글