1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | #include <stdio.h> int idx[10002] = { 0 }; int n, k; int search(int right) { int left = 0,tmp=0; while (left <= right) { int mid = (left + right) / 2; if (mid > n) { right = mid - 1; tmp++; } else if (mid < n) { left = mid + 1; tmp++; } else { tmp++; return tmp; } } } int main() { scanf("%d %d", &n, &k); for (int i = n; i <= 10000; i++) { if (search(i-1) == k) { idx[i] = 1; } } //출력 int num = 0; for (int i = n; i <= 10001; i++) { if (idx[i - 1] == 1 && idx[i] == 0) num++; } printf("%d\n", num); for (int i = n; i <= 10001; i++) { if (idx[i - 1] == 0 && idx[i] == 1) { printf("%d ", i); } if (idx[i - 1] == 1 && idx[i] == 0) { printf("%d\n", i-1); } } } | cs |
'알고리즘 > Divide and Conquer-이분탐색' 카테고리의 다른 글
crossed ladder 더블릿 (0) | 2019.02.13 |
---|---|
factorial vs pow 더블릿 (PS) (0) | 2019.02.13 |
공격적인 소 더블릿 (Aggressive Cow) (0) | 2019.02.12 |
6236 용돈관리 (PS) (0) | 2019.02.12 |
2343 기타레슨 (PS) (0) | 2019.02.12 |