Pagini recente » Cod sursa (job #1410185) | Cod sursa (job #1207814) | Cod sursa (job #603953) | Cod sursa (job #2382148) | Cod sursa (job #2356687)
#include <bits/stdc++.h>
using namespace std;
ifstream f("radixsort.in");
ofstream g("radixsort.out");
int i,j,n,a[1000010];
long long val,A,B,C;
stack<pair<int,int> > St0,St1,St2;
int main()
{
f>>n>>A>>B>>C;
St2.push({B,B});
for(i=2;i<=n;i++)
St2.push({(St2.top().first*A+B)%C,(St2.top().first*A+B)%C});
for(i=1;i<=33;i++)
{
while(St2.size())
{
if(St2.top().second&1)
St1.push({St2.top().first,St2.top().second>>1});
else
St0.push({St2.top().first,St2.top().second>>1});
St2.pop();
}
while(St0.size())
{
St2.push(St0.top());
St0.pop();
}
while(St1.size())
{
St2.push(St1.top());
St1.pop();
}
}
int j=(n-1)/10+1;
for(i=n;i>=1;i--)
{
if(i%10==1)a[j--]=St2.top().first;
St2.pop();
}
j=(n-1)/10+1;
for(i=1;i<=j;i++)
cout<<a[i]<<' ';
return 0;
}