Pagini recente » Cod sursa (job #3364323) | Cod sursa (job #3363676) | Cod sursa (job #3363452) | Cod sursa (job #3364381) | Cod sursa (job #3363785)
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;
ifstream cin("curcubeu.in");
ofstream cout("curcubeu.out");
vector<int> nxt,a,b,c,sol; int n;
int f(int x)
{
if(x>=n) return n;
if(nxt[x]==x) return x;
return nxt[x]=f(nxt[x]);
}
int main()
{
int a1,b1,c1; cin>>n>>a1>>b1>>c1;
a.resize(n); b.resize(n); c.resize(n);
a[1]=a1; b[1]=b1; c[1]=c1;
for(int i=2;i<=n-1;i++){
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;
}
sol.resize(n,-1);nxt.resize(n);
for(int i=1;i<=n-1;i++) nxt[i]=i;
for(int i=n-1;i>=1;i--)
{
int st,dr; st=min(a[i],b[i]); dr=max(a[i],b[i]);
while(st<=dr)
{
if(sol[st]==-1) sol[st]=c[i];
nxt[st]=f(st+1);
st=f(st);
}
}
for(int i=1;i<n;i++) cout<<sol[i]<<'\n';
return 0;
}