와 일요일에 문제는 풀었는데 글을 안 썼네. 바보같은 나..
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
public class 게임_1072 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine());
long x = Integer.parseInt(st.nextToken());
long y = Integer.parseInt(st.nextToken());
long z = (y * 100) / x;
if (z == 99 || z == 100) {
bw.write(-1 + "");
}
else {
long left = 1;
long right = 2000000000;
long ans = -1;
while (left <= right) {
long mid = (left + right) / 2;
long new_z = ((y + mid) * 100) / (x + mid);
if (new_z > z) {
ans = mid;
right = mid - 1;
} else {
left = mid + 1;
}
}
bw.write(ans + "");
}
bw.flush();
bw.close();
}
}
처음엔 x랑 y를 1씩 올라가게끔 코드를 짰는데 시간초과가 나서 보니 아 10억이구나.. 해서 이분탐색으로 수정한 케이스.
오늘은 아침 8시부터 종설 과목 팀빌딩 및 과목 설명을 들으러 학교에 갔다.
생각보다 다들 팀부터 주제까지 야무지게 짜온거 보고 아 얼른 짜야겠다 싶었다.
끝나고는 당연히 천밥 마감됐길래 익숙한 얼굴들과 아침을 먹었다.
학교 앞에 10시 전에 문 여는곳이 이렇게 없을줄이야....
홍천식당 제육도 오랜만에 먹으니 맛있더라.
그러고 오후 정시분 다녀오고 (2인 1조 하라길래 유성이 get)
저녁엔 약속이 있어 빨리 풀고 빨리 쓰고 나가야지.
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
public class 수열의합_1024 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine());
long n = Long.parseLong(st.nextToken());
long l = Long.parseLong(st.nextToken());
boolean check = false;
// n = (x * l) + (l(l-1))/2
for(long i = l;i<=100;i++) {
long sum = (i*(i-1))/2;
// 음수 X, 정수 O
if(n-sum >= 0 && (n-sum) % i == 0) {
long x = (n-sum)/i;
for(long j = 0;j<i;j++) {
bw.write((x+j) + " ");
}
check = true;
break;
}
}
if(!check) {
bw.write(-1+"");
}
bw.flush();
bw.close();
}
}
수열이길래 일단 n(n-1) / 2 부터 들이박고 보니까 생각보다 금방 풀렸던 문제.
제일 작은 수 x를 찾을때까지 반복 돌려서 풀었다.