문제
용해도 (A,B,K)
즉, 세 개의 정수 A, B, K가 주어졌을 때 [A..] 범위 내의 정수 수를 반환합니다.B] 이 값은 K로 나뉩니다. 즉,
{i: A ∆ i ≤ B, imod K = 0}
예를 들어, A = 6, B = 11 및 K = 2의 경우 [6..11] 범위 내에서 2로 나누어진 세 개의 숫자, 즉 6, 8, 10이 있으므로 함수는 3을 반환해야 합니다.
다음 가정에 대해 효율적인 알고리즘을 작성합니다.
A와 B는 [0..2,000,000,000] 범위의 정수입니다;
K는 [1..2,000,000,000] 범위의 정수입니다;
A b B.
코드
import math
def solution(A, B, K):
box=[]
#최대 몫과 최소 몫 찾음
#올림과, 내림을 통해 가능 범위 축소
max_div=int(B/K)
min_div=math.ceil(A/K)
#최대 또는 최소 몫*K 하여 범위에 속하는게 있는지보기
#print(max_div, min_div)
if (max_div*K)<A:
return 0
if (min_div*K)>B:
return 0
if max_div==min_div:
return 1
else:
return max_div-min_div+1
