Pagini recente » Cod sursa (job #893958) | Cod sursa (job #2822296) | Cod sursa (job #2535689) | Cod sursa (job #2650083) | Cod sursa (job #1733699)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream f ("radixsort.in");
ofstream t ("radixsort.out");
vector <int_fast32_t> v0,v1,v2,v3,v4,v5,v6,v7,v8,v9,v;
long n;
void flush(){
v0.resize(0);
v1.resize(0);
v2.resize(0);
v3.resize(0);
v4.resize(0);
v5.resize(0);
v6.resize(0);
v7.resize(0);
v8.resize(0);
v9.resize(0);}
void emplace(){v.resize(0);
for (unsigned long i=0;i<v0.size();++i)
v.push_back(v0[i]);
for (unsigned long i=0;i<v1.size();++i)
v.push_back(v1[i]);
for (unsigned long i=0;i<v2.size();++i)
v.push_back(v2[i]);
for (unsigned long i=0;i<v3.size();++i)
v.push_back(v3[i]);
for (unsigned long i=0;i<v4.size();++i)
v.push_back(v4[i]);
for (unsigned long i=0;i<v5.size();++i)
v.push_back(v5[i]);
for (unsigned long i=0;i<v6.size();++i)
v.push_back(v6[i]);
for (unsigned long i=0;i<v7.size();++i)
v.push_back(v7[i]);
for (unsigned long i=0;i<v8.size();++i)
v.push_back(v8[i]);
for (unsigned long i=0;i<v9.size();++i)
v.push_back(v9[i]);
}
void alloc(int_fast32_t x,int_fast32_t determ){
switch ((x%determ)/(determ/10)){
case 0:{v0.push_back(x);break;}
case 1:{v1.push_back(x);break;}
case 2:{v2.push_back(x);break;}
case 3:{v3.push_back(x);break;}
case 4:{v4.push_back(x);break;}
case 5:{v5.push_back(x);break;}
case 6:{v6.push_back(x);break;}
case 7:{v7.push_back(x);break;}
case 8:{v8.push_back(x);break;}
case 9:{v9.push_back(x);break;}
}}
void generatenum(int a,int b,int c){
v.push_back(b);
for (int i=1;i<n;++i)
v.push_back((a*v[i-1]+b)%c);
}
inline void show(){
for (int i=0;i<n;i+=10)
t<<v[i]<<" ";
}
void read(){int a,b,c;
f>>n>>a>>b>>c;
generatenum(a,b,c);}
void rasort(){int det=10;
for (int i=0;i<11;++i,det*=10){
for (int j=0;j<n;++j)
alloc(v[j],det);
emplace();
flush();}
}
int main()
{read();
rasort();
show();
return 0;
}