Pagini recente » Solutii FMI No Stress 4 | Cod sursa (job #939932) | Cod sursa (job #366863) | Cod sursa (job #2266549) | Cod sursa (job #1656780)
#include<cstdio>
#include<vector>
using namespace std;
struct numar{int nr, biti;};
numar v[10000001];
vector<numar>vc[256];
int n,a,b,c,sh,cate,p8;
int main(){
freopen("radixsort.in","r",stdin);
freopen("radixsort.out","w",stdout);
scanf("%d%d%d%d",&n,&a,&b,&c);
v[1].nr=b;
for(int i=2;i<=n;i++){
v[i].nr=(a* v[i-1].nr + b)%c;
}
sh=255;
p8=1;
for(int q=1;q<=4;q++){
for(int i=1;i<=n;i++){
if(sh==255)
v[i].biti=v[i].nr&sh;
else
v[i].biti=(v[i].nr&sh)>>p8;
vc[v[i].biti].push_back(v[i]);
}
cate=0;
for(int i=0;i<=255;i++)
while(vc[i].size()>0){
v[++cate]=vc[i].back();
vc[i].pop_back();
}
//
sh=sh<<8;
p8+=8;
}
for(int i=n;i>=1;i-=10)
printf("%d ",v[i].nr);
return 0;
}