https://www.acmicpc.net/problem/1011
중간까지 속도가 올라갔다가 똑같이 내려가니까
대충 중간까지의 합 n(n+1)/2 에서 *2 하면
n(n+1) 을 근의공식으로 전개하고 넘치거나 모자란거 계산하면 되는거 같은데
숏코딩한거 보니까 여기서 식을 이상하게
전개했는데 어떻게 했는지 모르겠어
main(x,y){for(gets(&x);~scanf("%d%d",&x,&y);printf("%dn",y=sqrt(4.*(y-x)-3)));}
모양보면 2차방정식 근의 공식 맞는거 같은데 어떻게 한거지?
총 거리 D의 패턴을 잘 관찰하면 k^2+1, ... k^2 + k 의 패턴은 2k번 작동시켜야 하고 k^2+k+1, ... , (k+1)^2 의 패턴은 2k+1 번 작동시켜야 됨. 대충 보면 sqrt(4D) 하면 얼추 상수차이 밖에 안나거든? 여기서 floor를 먹였을 때 원하는 값(2k, 2k+1) 이 나오도록 경계에 있는 값들에 대해서 부등식(4개 나옴) 세워서 풀면 m이 3이하 양수이면 저렇게 나옴.
답변 정말 감사합니다. 며칠간 고민했는데 결국은 상수 대입이였군요 감사합니다. 정말 정말
근의 공식보다는 그냥 원하는 상수 취사선택한 것 뿐.
아 저기서 m은 뭐냐면 sqrt(4D-m) 의 m 이다.