Pagini recente » Cod sursa (job #2260920) | Cod sursa (job #1250940) | Cod sursa (job #1828176) | Cod sursa (job #1666838) | Cod sursa (job #2310018)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("curcubeu.in");
ofstream fout("curcubeu.out");
const int NMAX = 1000005;
int a[NMAX],b[NMAX],c[NMAX],v[NMAX];
int next[NMAX];
int main()
{
long long N;
int a1,b1,c1;
fin >> N >> a1 >> b1 >> c1;
a[1]=a1;
b[1]=b1;
c[1]=c1;
if(a[1]>b[1]) swap(a[1],b[1]);
for(int i=2;i<=N-1;i++)
{
a[i]=(1LL*a[i-1]*i)%N;
b[i]=(1LL*b[i-1]*i)%N;
c[i]=(1LL*c[i-1]*i)%N;
if(a[i]>b[i]) swap(a[i],b[i]);
}
long long A,B;
for(int i=N-1;i>=1;i--)
{
A=a[i];
B=b[i];
while(A<=B)
{
if(v[A]==0)
{
v[A]=c[i];
next[A]=b[i]+1;
A++;
}
else A=next[A];
}
}
for(int i=1;i<=N-1;i++)
{
fout << v[i] << '\n';
}
return 0;
}