Pagini recente » Cod sursa (job #1432590) | Cod sursa (job #3209288) | Cod sursa (job #2777179) | Cod sursa (job #2652259) | Cod sursa (job #1992061)
#include<fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int *v, n, c[10];
void radix(int maxim)
{
int pas = 1;
int *nv = (int*)malloc((n+1)*sizeof(int));
memset((int*)nv, 0, n * sizeof(int));
while (maxim / pas > 0) {
for (int i = 1; i <= n; i++) {
c[(v[i] / pas) % 10] ++;
}
for (int i = 1; i <= 9; i++) {
c[i] = c[i] + c[i - 1];
}
for (int i = n; i >= 1; i--) {
int poz = (v[i] / pas) % 10;
nv[c[poz]] = v[i];
c[poz]--;
}
for (int i = 1; i <= n; i++)
v[i] = nv[i];
memset((int*)c, 0, 10 * sizeof(int));
pas = pas * 10;
}
}
int main()
{
int a, b, c;
int maxim = -858993460;
f >> n >> a >> b >> c;
v = (int *)malloc((n + 1) * sizeof(int));
v[1] = a;
a %= c;
c %= c;
for (int i = 2; i <= n; ++i) {
v[i] = (a * v[i - 1] + b) % c;
}
radix(maxim);
for (int i = 1; i <= n; i++) {
g << v[i] << " ";
}
return 0;
}