https://www.acmicpc.net/problem/1300
1300번: K번째 수
세준이는 크기가 N×N인 배열 A를 만들었다. 배열에 들어있는 수 A[i][j] = i×j 이다. 이 수를 일차원 배열 B에 넣으면 B의 크기는 N×N이 된다. B를 오름차순 정렬했을 때, B[k]를 구해보자. 배열 A와 B
www.acmicpc.net
티어 : 골드2
약간의 수학적 규칙성? 과 이진 탐색을 이용해서 해결했다.
다 풀고 나서 다른 사람들의 풀이를 구경했는데 나와 같은 방법으로 해결한 사람이 많이 보여서
왠지 모르게 기분이 좋았다.
#include<stdio.h>
#define MAX 1000000000
int n, k;
int min(int x, int y){
if(x < y) return x;
return y;
}
int f(int left, int right){
int mid = (left + right)/2;
long long int sum=0;
for(int i=1 ; i<=n ; i++) sum += min(mid/i, n);
if(right == left+1){
if(sum >= k) return left;
else return right;
}
if(sum >= k) return f(left, mid);
else return f(mid, right);
}
int main()
{
scanf("%d %d", &n, &k);
printf("%d", f(0, MAX));
}
'BOJ' 카테고리의 다른 글
10868. 최솟값 (0) | 2023.07.19 |
---|---|
8980. 택배 (0) | 2023.07.18 |
2042. 구간 합 구하기 (0) | 2023.07.18 |
8983. 사냥꾼 (0) | 2023.06.28 |
2457. 공주님의 정원 (0) | 2023.06.26 |