Xét chúng ta có một mảng A và hai số nguyên khác K và M. Chúng ta phải tìm K phần tử nhỏ nhất sau khi nối mảng với chính M số lần. Giả sử mảng có dạng như A =[3, 1, 2], K =4 và M =3 nên sau khi ghép A 3 lần sẽ được [3, 1, 2, 3, 1, 2, 3, 1 , 2], phần tử nhỏ thứ 4 là 2 ở đây.
Để giải quyết vấn đề này, chúng ta sẽ sắp xếp mảng A, sau đó trả về giá trị, hiện tại chỉ mục ((K - 1) / M), của mảng.
Ví dụ
#include<iostream> #include<algorithm> using namespace std; int findKSmallestNumber(int A[], int N, int M, int K) { sort(A, A + N); return (A[((K - 1) / M)]); } int main() { int A[] = { 3, 1, 2 }; int M = 3, K = 4; int N = sizeof(A) / sizeof(A[0]); cout << K << "th smallest number after concatenating " << M << " times, is: "<<findKSmallestNumber(A, N, M, K); }
Đầu ra
4th smallest number after concatenating 3 times, is: 2