Pagini recente » Rating Andrei Opran (HYR0) | Monitorul de evaluare | Cod sursa (job #2708047) | Istoria paginii runda/pregatire2021_3/clasament | Cod sursa (job #1444688)
#include <stdio.h>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <string>
#include <bitset>
#include <vector>
#include <deque>
#include <queue>
#include <set>
#define nmax 10000010
#define step1 5000000
#define step2 10000000
#define step3 15000000
#define step4 22000000
using namespace std;
long long a,b,c,x;
int t[nmax],i,j,n,nr=0;
vector <int> d[5];
int main(){
freopen("radixsort.in","r",stdin);
freopen("radixsort.out","w",stdout);
scanf("%d%d%d%d",&n,&a,&b,&c);
t[1]=b;
for (i=2;i<=n;i++){
t[i]=(a*t[i-1]+b)%c; x=t[i];
if (x<step1) d[1].push_back(x);
if (x<step2) d[2].push_back(x);
if (x<step3) d[3].push_back(x);
if (x<step4) d[4].push_back(x);
}
for (i=1;i<=4;i++){
sort(d[i].begin(),d[i].end());
for (j=0;j<d[i].size();j++)
nr++,t[nr]=d[i][j];
}
for (i=1;i<=n;i+=10)
printf("%d ",t[i]);
return 0;
}