Pagini recente » Borderou de evaluare (job #826610) | Cod sursa (job #2043084) | Cod sursa (job #960233) | Cod sursa (job #2566648) | Cod sursa (job #1479629)
#include <cstdio>
#define NMAX 1000023
int n;
int arr[NMAX],poz[NMAX];
struct str
{
int a;
int b;
int c;
}v[NMAX];
int next(int pos)
{
if(poz[pos]==0) return pos;
poz[pos]=next(poz[pos]);
return poz[pos];
}
void update(int st,int dr,int cul)
{
if(st>dr)
{
int temp=st;
st=dr;
dr=temp;
}
for(int i=next(st);i<=dr;i=next(i+1))
{
// printf("%d\n",arr[i]);
arr[i]=cul;
poz[i]=dr+1;
}
}
int formula(int nr,int i)
{
return (nr*i)%n;
}
int main()
{
freopen ("curcubeu.in","r",stdin);
freopen ("curcubeu.out","w",stdout);
scanf("%d%d%d%d",&n,&v[1].a,&v[1].b,&v[1].c);
for(int i=2;i<n;i++)
{
v[i].a=(1LL*v[i-1].a*i)%n;
v[i].b=(1LL*v[i-1].b*i)%n;
v[i].c=(1LL*v[i-1].c*i)%n;
}
for(int i=n-1;i>=1;i--)
{
update(v[i].a,v[i].b,v[i].c);
}
for(int i=1;i<n;i++) printf("%d\n",arr[i]);
}