Pagini recente » Cod sursa (job #2035210) | Cod sursa (job #1763214) | Cod sursa (job #1291924) | Cod sursa (job #976592) | Cod sursa (job #1451738)
#include <stdio.h>
#define MAXN 1000000
int a[MAXN], b[MAXN], c[MAXN], v[MAXN+1], dr[MAXN];
int max(int x){
if(dr[x]==0){
return x;
}
dr[x]=max(dr[x]);
return dr[x];
}
int main(){
int n, i, aux, x;
long long p;
FILE *fin, *fout;
fin=fopen("curcubeu.in", "r");
fout=fopen("curcubeu.out", "w");
fscanf(fin, "%lld%d%d%d", &p, &a[1], &b[1], &c[1]);
n=p-1;
for(i=2; i<=n; i++){
a[i]=(1LL*a[i-1]*i)%p;
b[i]=(1LL*b[i-1]*i)%p;
c[i]=(1LL*c[i-1]*i)%p;
}
v[0]=v[n+1]=0;
for(i=n; i>0; i--){
if(a[i]>b[i]){
aux=a[i];
a[i]=b[i];
b[i]=aux;
}
x=max(a[i]);
while(x<=b[i]){
v[x]=c[i];
dr[x]=x+1;
x=max(x);
}
}
for(i=1; i<=n; i++){
fprintf(fout, "%d\n", v[i]);
}
fclose(fin);
fclose(fout);
return 0;
}