Pagini recente » Cod sursa (job #2985133) | Borderou de evaluare (job #1796767) | Cod sursa (job #3184822) | Cod sursa (job #3214299) | Cod sursa (job #3182452)
#include <fstream>
using namespace std;
ifstream fin ("curcubeu.in");
ofstream fout("curcubeu.out");
int n,a,b,c,i,NEXT[1000005],j,sol[1000005];
struct elem
{
int A,B,C;
}Q[1000005];
int get_NEXT(int x)
{
int c=x,aux;
while(NEXT[x]!=x)
x=NEXT[x];
while(c!=x)
{
aux=NEXT[c];
NEXT[c]=x;
c=aux;
}
return c;
}
int main()
{
fin>>n>>Q[1].A>>Q[1].B>>Q[1].C;
if(Q[1].A>Q[1].B)
swap(Q[1].A,Q[1].B);
for(i=1;i<=n;i++)
NEXT[i]=i;
for(i=2;i<n;i++)
{
Q[i].A=(1LL*Q[i-1].B*i)%n;
Q[i].B=(1LL*Q[i-1].B*i)%n;
Q[i].C=(1LL*Q[i-1].C*i)%n;
if(Q[i].A>Q[i].B)
swap(Q[i].A,Q[i].B);
}
for(i=n-1;i>0;i--)
{
for(j=get_NEXT(Q[i].A);j<=Q[i].B;j=NEXT[j])
{
sol[j]=Q[i].C;
NEXT[j]=get_NEXT(j+1);
}
}
for(i=1;i<n;i++)
fout<<sol[i]<<"\n";
return 0;
}