Pagini recente » Cod sursa (job #1913769) | Cod sursa (job #1892768)
#include <cstdio>
#include <algorithm>
#define NMAX 1000100
#define FOR(i,a,b) for(int i = a; i<=b;i++)
using namespace std;
int a[NMAX], b[NMAX], c[NMAX];
int Next[NMAX], sol[NMAX];
FILE* fin = fopen("curcubeu.in","r");
FILE* fout = fopen("curcubeu.out","w");
int N;
int main()
{
fscanf(fin,"%d%d%d%d", &N, &a[1], &b[1], &c[1]);
FOR(i,2,N)
{
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;
}
for (int i = N; i >= 1; --i)
{
int st = a[i], dr = b[i];
if (st > dr)
swap(st,dr);
while (st <= dr)
{
if (!Next[st])
{
Next[st] = dr + 1;
sol[st] = c[i];
++st;
}
else
{
int tmp = Next[st];
if (dr + 1 > Next[st])
Next[st] = dr + 1;
st = tmp;
}
}
}
FOR(i,1,N-1)
fprintf(fout,"%d\n", sol[i]);
return 0;
}