Pagini recente » Cod sursa (job #2777617) | Cod sursa (job #818275) | Cod sursa (job #2161864) | Cod sursa (job #1761475) | Cod sursa (job #1547730)
#include <fstream>
#include <cstdio>
using namespace std;
ifstream f("curcubeu.in");
int N;
int A[1000005],B[1000005],C[1000005];
int Next[1000005],Colour[1000005];
void precalc()
{
f>>N>>A[1]>>B[1]>>C[1];
Next[1]=2;
for(int i=2;i<N;i++)
{
Next[i]=i+1;
A[i]=((long long)A[i-1]*i)%N;
B[i]=((long long)B[i-1]*i)%N;
C[i]=((long long)C[i-1]*i)%N;
}
}
void Solve()
{
for(int i=N-1;i>=1;i--)
{
int x=min(A[i],B[i]),y=max(A[i],B[i]);
int j=x;
while(j<=y)
{
if(Colour[j]==0)
{
Colour[j]=C[i];
Next[j]=y+1;
++j;
}
else
{
int nxt=Next[j];
Next[j]=max(Next[j],y+1);
j=nxt;
}
}
}
for(int i=1;i<N;i++)
printf("%d\n",Colour[i]);
printf("\n");
}
int main()
{
freopen("curcubeu.out","w",stdout);
precalc();
Solve();
return 0;
}