Code tính số thứ k trong dãy bị sai

a[1] = w
a[i] = ( x*a[i -1]+ y ) mod z với i > 1
Yêu cầu: Cho các số nguyên w,x,y,z,n và k (1≤ w, x,y,z ≤10 000, 1 ≤ k ≤ n ≤ 10^5). Hãy xác định số thứ k trong dãy khi sắp xếp các số của A theo thứ tự không giảm.

#include <bits/stdc++.h>

using namespace std;
long long w,x,y,z,n,k,a[100001];
int main()
{
    cin>>x>>y>>z>>w>>n>>k;
    a[1]=w;
    for(int i=2;i<=n;i++)
    {
        a[i]=(x*a[i-1]+y)%z;
    }
    sort(a,a+n);
    cout<<a[k];
    return 0;
}

Dùng markdown để format code nha. :slight_smile:

Số thứ k có index là k - 1. :kissing:

1 Like

Chọn số lớn thứ k là O(min(n, z)) :slight_smile:

3 Likes
sort(a + 1, a + 1 + n);

bạn nhé

2 Likes

đúng rồi ạ cảm ơn chị(anh) nhiều ạ :heart::heart::heart:

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?