Pagini recente » Cod sursa (job #3364847) | Cod sursa (job #3364848) | Cod sursa (job #3365541) | Cod sursa (job #3365533) | Cod sursa (job #3365532)
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream cin("curcubeu.in");
ofstream cout("curcubeu.out");
vector<int> nexts(1000005,0);
int poola(int a) {
int cp=a;
while (nexts[a]!=a) {
a=nexts[a];
}
while (nexts[cp]!=cp) {
int x=nexts[cp];
nexts[cp]=a;
cp=x;
}
return a;
}
int main() {
int n,a,b,c;
cin>>n>>a>>b>>c;
vector<int>l(n);
vector<int>r(n);
vector<int>x(n);
int ii=1;
while (a>0||b>0) {
l[ii]=a;
r[ii]=b;
x[ii]=c;
ii++;
a=(a*ii)%n;
b=(b*ii)%n;
c=(c*ii)%n;
}
nexts.resize(ii);
ii--;
for (int j=1;j<=n;j++) {
nexts[j]=j;
}
vector<int>ans(n+1);
for (int i=ii;i>=1;i--)
{
a=min(l[i],r[i]);
b=max(l[i],r[i]);
c=x[i];
for (int j=poola(a);j<=b;j=j) {
//cout<<j<<" ";
ans[j]=c;
nexts[j]=poola(j+1);
j=nexts[j];
}
}
for (int i=1;i<n;i++) {
cout<<ans[i]<<'\n';
}
return 0;
}