Pagini recente » Cod sursa (job #2168560) | Cod sursa (job #32179) | Cod sursa (job #2636184) | Cod sursa (job #3272886) | Cod sursa (job #808576)
Cod sursa(job #808576)
#include<stdio.h>
#include<set>
#include<utility>
#include<vector>
using namespace std;
#define nmax 1000005
long a, b, c, i, n, inc, sf;
vector < pair<int, int> > v[nmax][1];
vector < pair<int, int> > ::iterator it;
set < pair<int, int> > h;
void citire()
{
for (i=1;i<=n-1;i++)
{
if (a<b)
{ inc=a; sf=b;}
else
{ inc=b; sf=a;}
v[inc][0].push_back(make_pair(-i,c));
v[sf][1].push_back(make_pair(-i,c));
a=(a*(i+1))%n; b=(b*(i+1))%n; c=(c*(i+1))%n;
}
}
void rezolvare()
{
for (i=1;i<=n-1;i++)
{
for (it=v[i][0].begin();it!=v[i][0].end();it++)
h.insert(*it);
if (h.size()==0)
printf("0\n");
else
printf("%ld\n",(*h.begin()).second);
for (it=v[i][1].begin();it!=v[i][1].end();it++)
h.erase(*it);
}
}
int main()
{
freopen("curcubeu.in","r",stdin);
freopen("curcubeu.out","w",stdout);
scanf("%ld %ld %ld %ld",&n,&a,&b,&c);
citire();
rezolvare();
return 0;
}