https://www.acmicpc.net/problem/1011
풀이: 거리가 제곱수 일 때(d = s^2), 그 거리 까지 갈 수 있는 최소 작동수에서 최대 거리는 그 수의 제곱근(s) 이다. 최소 작동수는 대칭일때 만들어지므로 제곱수일 때 최소 작동수는 2*s - 1이 된다. 거리가 제곱수가 아니라면, 거리에서 그 거리보다 작은 제곱수를 뺀 나머지로 계산한다. (d - s^2) / s + 1 즉 제곱수 만큼 간 후 남은 거리를 갈 수 있는 최대 거리인 s로 나눈 값에 올림한 값과 같다.
https://www.acmicpc.net/problem/1016
풀이: min 수 부터 max 까지 제곱수의 배수가 되는 수를 찾는다. max-min+1 에서 위에서 찾은 제곱수의 배수의 개수를 뺀다. 코드: 사용언어 : Python 3
1 2 3 4 5 6 7 8 9 10 11 n,m=map(int,input().split()) a,b=0,[0]*1000001 for i in range(2,int(m**.5)+1): q=n if n%(i*i)!=0: q=(n//(i*i)+1)*i*i for t in range(q,m+1,i*i): if b[t-n]==0: b[t-n]=1 a+=1 print(m-n+1-a)