Pagini recente » Cod sursa (job #2748191) | Cod sursa (job #1654691) | Cod sursa (job #999497) | Cod sursa (job #1382527) | Cod sursa (job #1980393)
#include<bits/stdc++.h>
#define maxN 1000005
using namespace std;
int nxt[maxN],v[maxN],n,a,b,c;
typedef struct tip
{
long long a,b,c;
};
tip tr[maxN];
inline int F(int x)
{
while(nxt[x])
{
x=nxt[x];
}
return x;
}
inline void unite(int a,int b,int c)
{
if(a>b) swap(a,b);
while(a<=b)
{
if(v[a])
{
a=F(a);
}
if(a<=b)
{
v[a]=c;
nxt[a]=b+1;
a++;
}
}
}
int main()
{
freopen("curcubeu.in","r",stdin);
freopen("curcubeu.out","w",stdout);
scanf("%d%d%d%d",&n,&a,&b,&c);
tr[1]={a,b,c};
for(int i=2;i<n;i++)
tr[i]={(long long)(tr[i-1].a*i)%n,(long long)(tr[i-1].b*i)%n,(long long)(tr[i-1].c*i)%n};
for(int i=n-1;i>=1;i--)
unite(tr[i].a,tr[i].b,tr[i].c);
for(int i=1;i<n;i++)
printf("%d\n",v[i]);
return 0;
}