Pagini recente » Cod sursa (job #2517679) | Cod sursa (job #2025490) | Cod sursa (job #2220304) | Cod sursa (job #2650421) | Cod sursa (job #2036014)
#include<iostream>
#include<limits.h>
#include<stdio.h>
using namespace std;
FILE*f=fopen("radixsort.in","r");
FILE*g=fopen("radixsort.out","w");
int n,v[10000005],i,a,b,c;
void radix(int v[], int n) {
int c[11],s[10000005],p,i,mx=-LONG_MAX;
for(i=1;i<=n;i++)
if(v[i]>mx) mx=v[i];
for(p=1;mx*10/p>0;p*=10) {
for(i=0;i<=10;i++) c[i]=0;
for(i=1;i<=n;i++) c[(v[i]/p)%10]++;
for(i=1;i<10;i++) c[i]+=c[i-1];
for(i=n;i>=1;i--) {
s[c[(v[i]/p)%10]]=v[i];
c[(v[i]/p)%10]--;
}
for(i=1;i<=n;i++) v[i]=s[i];
}
}
int main() {
fscanf(f,"%d%d%d%d",&n,&a,&b,&c);
v[1]=b;
for(i=2;i<=n;i++) v[i]=(a*v[i-1]+b)%c;
radix(v,n);
for(i=1;i<=n;i+=10) fprintf(g,"%d ",v[i] );
fclose(f); fclose(g);
return 0;
}