Cod sursa(job #419053)

Utilizator AndreiDDiaconeasa Andrei AndreiD Data 16 martie 2010 21:20:47
Problema Koba Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.38 kb
#include <cstdio>

#define file_in "koba.in"
#define file_out "koba.out"

int n,t1,t2,t3,i,s,r,j,poz1,poz2,t11,t22,t33,r1,r2,r3,r11,r22,r33,v[1000000],nr,suma;

int main()
{
	freopen(file_in,"r",stdin);
	freopen(file_out,"w",stdout);
	
	scanf("%d %d %d %d", &n, &t1, &t2, &t3);
	
	
	
    s=t1%10+t2%10+t3%10;
	v[1]=t1;
	v[2]=t2;
	v[3]=t3;
	nr=3;
	for (i=4;i<=n/4;++i)
	{
		int ok=1;
		r1=(t1%10)*(t2%10)+(t3%10);
		//printf("%d\n", r1);
		v[++nr]=r1;
		s+=r1%10;
		t1=t2%10;
		t2=t3%10;
		t3=r1%10;
		
	}
	
	nr=n/4;
	poz1=0;
	for (i=1;i<=nr && !poz1;++i)
	{
		r1=v[i];
		r2=v[i+1];
		r3=v[i+2];
		for (j=i+3;j<=nr && !poz1;++j)
		{
			r11=v[j];
			r22=v[j+1];
			r33=v[j+2];
			
			if (r1==r11 && r2==r22 && r3==r33)
			{
				poz1=i;
				poz2=j;
			}
		}
	}
	poz2--;
	suma=0;
	s=0;
	for (i=1;i<=poz1-1;++i)
		 suma+=v[i];
	
	for (i=poz1;i<=poz2;++i)
		 s+=v[i];
	//printf("%d\n", suma);
	//printf("%d\n", s);
	
	int x=(n-poz1+1)%(poz2-poz1+1);
	
	//printf("%d\n", x);
  //int q=(n-poz1+1)/(poz2-poz1+1);
  //printf("%d\n", q);
     int ss=(s*((n-poz1+1)/(poz2-poz1+1)));
	 //printf("%d\n", ss);
	s=0;
	suma+=ss;
	for (i=poz1;i<=poz1+x-1;++i)
		 s+=v[i];
	suma+=s;
	/*for (i=1;i<=n;++i)
		 printf("%d\n", v[i]);*/
	
	//printf("%d %d", poz1,poz2);
	printf("%d", suma); 
	
	fclose(stdin);
	fclose(stdout);
	
	return 0;
	
}