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