Pagini recente » Cod sursa (job #530205) | Cod sursa (job #2641886) | Cod sursa (job #3174304) | Cod sursa (job #1141151) | Cod sursa (job #2582459)
#include <fstream>
#include <algorithm>
using namespace std;
int const N = 1e7 + 1 , bk = 16;
int index [N] , v [N] , fq [1 + (1 << 8)] , v2 [N];
ifstream f ("radix.in");
ofstream g ("radix.out");
int main()
{
int n , a , b , c;
f >> n >> a >> b >> c;
v [1] = b;
for(int i = 2 ; i <= n ; ++ i)
v [i] = (1LL * v [i - 1] * a % c + b) % c;
for(int i = 1 ; i < 5 ; ++ i){
int nrb;
fill (fq , fq + (1 << 8) , 0);
if (i == 1)
nrb = (1 << 8) - 1;
else
nrb = (1 << 8 * i) - 1 - ((1 << 8 * (i - 1)) - 1);
for (int j = 1 ; j <= n ; ++ j)
++ fq [v [j] & nrb];
index [0] = 1;
for (int r = 1 ; r < (1 << 8) ; ++ r)
index [r] = index [r - 1] + fq [r - 1];
for(int j = 1 ; j <= n ; ++ j){
v2 [index [v [j] & nrb]] = v [j];
++ index [v [j] & nrb];
}
swap (v , v2);
}
for(int i = 1 ; i <= n ; i += 10)
g << v2 [i] << ' ';
return 0;
}