Pagini recente » Cod sursa (job #1530559) | Cod sursa (job #51081) | Cod sursa (job #2427772) | Cod sursa (job #1068507) | Cod sursa (job #1479615)
#include <cstdio>
#define NMAX 1000023
int n,act=0,pos;
int a,b,c;
int v[NMAX],w[NMAX],disp[NMAX],cul[NMAX],q[NMAX];
void swap(int &a,int &b)
{
int temp=a;
a=b;
b=temp;
}
void update(int p1,int p2)
{
act++;
cul[act]=c;
if(p1>p2) swap(p1,p2);
v[p2]=0;
v[p1]=act;
w[p2+1]=act;
}
void ver()
{
while(disp[q[pos]]==1) pos--;
}
int main()
{
freopen ("curcubeu.in","r",stdin);
freopen ("curcubeu.out","w",stdout);
scanf("%d%d%d%d",&n,&a,&b,&c);
for(int i=1;i<n;i++)
{
update(a,b);
a=(a*(i+1))%n;
b=(b*(i+1))%n;
c=(c*(i+1))%n;
}
/* for(int i=1;i<=n;i++) printf("%d ",v[i]);
printf("\n");
for(int j=1;j<=n;j++) printf("%d ",w[j]);
*/for(int i=1;i<n;i++)
{
if(v[i]>0)
{
q[++pos]=v[i];
}
if(w[i]>0)
{
disp[w[i]]=1;
ver();
}
// for(int j=1;j<=pos;j++) printf("%d ",q[j]);
printf("%d\n",cul[q[pos]]);
// printf("\n");
}
}