Cod sursa(job #73881)

Utilizator anna_bozianuBozianu Ana anna_bozianu Data 21 iulie 2007 16:38:52
Problema Rsir Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include<stdio.h>
long long int t0,t1,t2,t3,a,b,c,d,e,m,n,i,j,aux,
aa,bb,cc,dd,ee,ff,gg,hh,ii,jj,kk,ll,mm,p2[7000],p3[7000],p4[7000];
int main()
{
	FILE *f,*g;
	f=fopen("rsir.in","r");
	g=fopen("rsir.out","w");
	fscanf(f,"%lld%lld",&t0,&t1);
	fscanf(f,"%lld%lld",&a,&b);
	fscanf(f,"%lld%lld%lld",&c,&d,&e);
	fscanf(f,"%lld%lld",&m,&n);
	for(i=1;i<m;i++)
	{ p2[i]=(i*i)%m;
	  p3[i]=(p2[i]*i)%m;
	  p4[i]=(p3[i]*i)%m;
	}
	aa=(a*a*b)%m;
	bb=(b*b*b)%m;
	cc=(2*a*b*b)%m;
	dd=(2*a*b*c)%m;
	ee=(2*b*b*d)%m;
	ff=(2*a*b*d)%m;
	gg=(b*c*c+2*a*b*e+a*d)%m;
	hh=(a+b*d*d+2*b*b*e+b*d)%m;
	ii=(2*b*c*d)%m;
	jj=(2*b*c*e+c*d)%m;
	kk=(2*b*d*e+c+d*d)%m;
	ll=(b*e*e+d*e+e)%m;
	mm=(2*b*b*c)%m;
	for(i=1;i<=n/2;i++)
	{
	   t2=a*p2[t0]+b*p2[t1]+c*t0+d*t1+e;
	   t3=aa*p4[t0]+bb*p4[t1]+cc*p2[t0]*p2[t1]+dd*p3[t0]+ee*p3[t1]+
	   ff*p2[t0]*t1+mm*t0*p2[t1]+gg*p2[t0]+hh*p2[t1]+ii*t0*t1+jj*t0+kk*t1+ll;
	   t0=t2%m;
	   t1=t3%m;
	}
	if(n%2)	fprintf(g,"%lld\n",t1);
	else fprintf(g,"%lld\n",t0);
	fcloseall();
	return 0;
}