[SWEA] 9843. 촛불 이벤트
문제
어떤 수 N 을 보고 삼각수라면 몇 번째인지 아니라면 -1 을 출력하는 문제이다. 결국 N = n(n+1)/2 이고, n을 찾아야하기 때문에 이분 탐색을 사용하였다.
실수
코드
import java.util.StringTokenizer;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
public class Solution {
static StringBuilder result = new StringBuilder();
public static void main(String args[]) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(br.readLine());
long n;
///////////////////////////
long l, r, mid, answer;
///////////////////////////
for (int test_case = 1; test_case <= T; test_case++) {
result.append("#" + test_case + " ");
n = Long.parseLong(br.readLine());
/////////////////////////////
answer = -1;
l = 0L;
r = 10000000001L;
while (l <= r) {
mid = (l + r) / 2;
if (mid * (mid + 1) / 2 < n) {
l = mid + 1;
} else if (mid * (mid + 1) / 2 > n) {
r = mid - 1;
} else {
answer = mid;
break;
}
}
result.append(answer + "\n");
System.out.print(result);
result.setLength(0);
}
}
}
댓글남기기