Pagini recente » Cod sursa (job #332865) | Cod sursa (job #278368) | Cod sursa (job #1215556) | Cod sursa (job #1913501) | Cod sursa (job #394235)
Cod sursa(job #394235)
using namespace std;
#include<cstdio>
#define MAX_N 1000001
#define ll long long
int N, urm[MAX_N];
int A[MAX_N], B[MAX_N], C[MAX_N], V[MAX_N];
int main()
{
freopen("curcubeu.in", "r",stdin); freopen("curcubeu.out", "w",stdout);
scanf("%d%d%d%d",&N,&A[1], &B[1], &C[1]);
int i, j, tmp;
urm[1] = 2;
if(A[1] > B[1]) { tmp = A[1]; A[1] = B[1]; B[1] = tmp; }
for(i = 2; i < N; ++i)
{
A[i] = ((ll)A[i-1] * i) % N;
B[i] = ((ll)B[i-1] * i) % N;
C[i] = ((ll)C[i-1] * i) % N;
if(A[i] > B[i]) { if(A[i] > B[i]) { tmp = A[i]; A[i] = B[i]; B[i] = tmp; } }
urm[i] = i + 1;
}
for(i = N - 1; i; --i)
for(j = A[i]; j <= B[i]; tmp = urm[j], urm[j] = B[i] + 1, j = tmp)
if( !V[j] ) V[j] = C[i];
for(i = 1; i < N; ++i) printf("%d\n", V[i]);
return 0;
}