Pagini recente » Cod sursa (job #975422) | Cod sursa (job #1766312) | Cod sursa (job #2205531) | Cod sursa (job #1452396) | Cod sursa (job #1444748)
#include <stdio.h>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <string>
#include <bitset>
#include <vector>
#include <deque>
#include <queue>
#include <set>
using namespace std;
long long a,b,c,x,y;
long i,j,n,nr=0,l=0,bb=1,t[260];
vector <long> d[260];
int main(){
freopen("radixsort.in","r",stdin);
freopen("radixsort.out","w",stdout);
scanf("%lld%lld%lld%lld",&n,&a,&b,&c);
y=b;
for (i=1000,nr=1;i<=2000000000;i*=2,nr++)
t[nr]=i;
for (i=1;i<=nr;i++)
if (y<t[i]) { d[i].push_back(y); break; }
if (i>nr) d[i].push_back(y);
for (i=2;i<=n;i++){
x=(a*y+b)%c; y=x;
for (j=1;j<=nr;j++)
if (x<t[j]) { d[j].push_back(x); break; }
if (j>nr) d[i].push_back(x);
}
for (i=1;i<=4;i++){
sort(d[i].begin(),d[i].end());
for (j=0;j<d[i].size();j++){
l++;
if (l==bb) printf("%d ",d[i][j]),bb+=10;
}
}
return 0;
}