Pagini recente » Borderou de evaluare (job #1659685) | Cod sursa (job #343687)
Cod sursa(job #343687)
#include <iostream>
#include <fstream>
using namespace std;
#define LIM 1000005
int N,A[LIM],B[LIM],C[LIM],i,j,nr[LIM],aux[LIM],x,p;
int main()
{
ifstream f("curcubeu.in");
ofstream g("curcubeu.out");
f>>N>>A[1]>>B[1]>>C[1];
f.close();
for (i=2;i<N;++i)
{
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;
if (A[i]>B[i])
{
x=A[i];
A[i]=B[i];
B[i]=x;
}
}
for(i=1;i<N;++i)
{
aux[i]=i+1;
if(A[i]>B[i])
{
A[i]^=B[i];
B[i]^=A[i];
A[i]^=B[i];
}
}
for (i=N-1;i;--i)
{
p=A[i];
while (p<=B[i])
{
if (nr[p]==0) nr[p]=C[i];
x=aux[p];
aux[p]=B[i]+1;
p=x;
}
}
for (i=1;i<N;++i)
g<<nr[i]<<endl;
g.close();
return 0;
}