Pagini recente » Cod sursa (job #1332665) | Cod sursa (job #1846796) | Cod sursa (job #640801) | Cod sursa (job #2895291) | Cod sursa (job #1463810)
#include<cstdio>
using namespace std;
long long a[1000001],b[1000001],c[1000001];
int next[1000001],sol[1000001];
int find_next(int elem){
if(next[elem]==elem)
return elem;
int x;
x=find_next(next[elem]);
next[elem]=x;
return x;
}
int main(){
freopen("curcubeu.in","r",stdin);
freopen("curcubeu.out","w",stdout);
int n,x,i,j,mini,maxi;
scanf("%d%d%d%d",&n,&a[1],&b[1],&c[1]);
for(i=2;i<=n-1;i++){
a[i]=(a[i-1]*i)%n;
b[i]=(b[i-1]*i)%n;
c[i]=(c[i-1]*i)%n;
}
for(i=1;i<=n;i++)
next[i]=i;
for(i=n-1;i>=1;i--){
if(a[i]>b[i]){
mini=b[i];
maxi=a[i];
}
else{
mini=a[i];
maxi=b[i];
}
x=mini;
while(x<=maxi){
x=find_next(x);
if(x<=maxi){
sol[x]=c[i];
next[x]=next[maxi+1];
}
x++;
}
next[mini]=next[maxi+1];
}
for(i=1;i<=n-1;i++)
printf("%d\n",sol[i]);
return 0;
}