Cod sursa(job #394191)

Utilizator FlorianFlorian Marcu Florian Data 10 februarie 2010 17:35:22
Problema Curcubeu Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
using namespace std;
#include<fstream>
#define MAX_N 1000007
#define ll long long
int N, urm[MAX_N];
int A[MAX_N], B[MAX_N], C[MAX_N], V[MAX_N];
int main()
{
	ifstream in("curcubeu.in"); ofstream out("curcubeu.out");
	in>>N>>A[1]>>B[1]>>C[1];
	int i, j, tmp;
	urm[1] = 2;
	if(A[1] > B[1]) swap(A[1], B[1]);
	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]) swap(A[i], B[i]);
		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) out<<V[i]<<"\n";
	return 0;
}