Pagini recente » Cod sursa (job #720567) | Cod sursa (job #1040538) | Cod sursa (job #111063) | Cod sursa (job #596787) | Cod sursa (job #2316229)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("curcubeu.in");
ofstream fout("curcubeu.out");
int n,i,j,nr,k,a,b,c,x;
int r[1000005],t[1000005];
struct oper
{ int a,b,c; } v[1000005];
int tati(int n)
{
if(t[n]==n) return n;
t[n]=tati(t[n]);
return t[n];
}
int main() {
fin>>n>>a>>b>>c;
v[1].a=min(a,b);
v[1].b=max(a,b);
v[1].c=c;
for(i=2;i<n;i++)
{
a=(a*i)%n;
b=(b*i)%n;
c=(c*i)%n;
v[i].a=min(a,b);
v[i].b=max(a,b);
v[i].c=c;
}
for(i=n-1;i>=1;i--)
{
a=v[i].a;
b=v[i].b;
if(r[b]) t[i]=tati(b);
else t[i]=i;
for(j=a;j<=b;)
{
if(r[j])
{
x=tati(r[j]);
j=v[x].b+1;
t[x]=t[i];
}
else
{ r[j]=i; j++; }
}
}
for(i=1;i<n;i++)
fout<<v[r[i]].c<<"\n";
}