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