Pagini recente » Cod sursa (job #1063855) | Cod sursa (job #775281) | Cod sursa (job #2871635) | Cod sursa (job #292475) | Cod sursa (job #1920527)
#include<cstdio>
#include<algorithm>
using namespace std;
//ifstream fin("curcubeu.in");
//ofstream fout("curcubeu.out");
int a[1000001],b[1000001],c[1000001];
int arb[1000002];
int v[1000002];
int parinte(int nd){
if(!arb[nd])return nd;
arb[nd]=parinte(arb[nd]);
return arb[nd];
}
int unire(int a, int b, int c){
if(a>b)swap(a,b);
while(a<=b){
if(v[a])
a=parinte(a);
if(a<=b){
v[a]=c;
arb[a]=b+1;
++a;
}
}
}
int main(){
int n,i;
freopen("curcubeu.in","r",stdin);
freopen("curcubeu.out","w",stdout);
scanf("%d %d %d %d",&n,&a[1],&b[1],&c[1]);
//fin>>n>>a[1]>>b[1]>>c[1];
for(i=2;i<n;i++){
a[i]=(unsigned long long)a[i-1]*i%n;
b[i]=(unsigned long long)b[i-1]*i%n;;
c[i]=(unsigned long long)c[i-1]*i%n;;
}
for(i=n-1;i>=1;i--)
unire(a[i],b[i],c[i]);
for(i=1;i<n;i++)
printf("%d\n",v[i]);
//fout<<v[i]<<'\n';
return 0;
}