Cod sursa(job #340331)

Utilizator ZethpixZethpix Zethpix Data 14 august 2009 11:58:09
Problema Koba Scor 0
Compilator cpp Status done
Runda w3 Marime 0.94 kb
#include <stdio.h>
long s,a,b,c,d,n,i,sum,nr,p,p1,p2,v[1001];
int main(){
	FILE *f,*g;
	f=fopen("koba.in","r");
	g=fopen("koba.out","w");
	fscanf(f,"%ld%ld%ld%ld",&n,&a,&b,&c);
	a%=10;b%=10;c%=10;
	for(i=0;i<=999;i++) v[i]=0;
	v[a*100+b*10+c]=1;
	s=a+b+c;
	for(i=2;i<=n-2;i++){
		d=(c+(b*a)%10)%10;
		a=b;
		b=c;
		c=d;
		s+=c;
		if(v[a*100+b*10+c]==0) v[a*100+b*10+c]=i;
		else{
			p1=a*100+b*10+c;
			s-=c+b+a;
			p2=p1;
			break;
		}
	}
	sum=p1/10%10+p1/100;
	nr=0;
	p=p1;
	int ok=1;
	while(p1!=p2||ok){
		if(ok) ok=0;
		sum+=p1%10;
		c=p1%10;
		p1/=10;
		b=p1%10;
		p1/=10;
		a=p1%10;
		d=(c+(b*a)%10)%10;
		a=b;
		b=c;
		c=d;
		p1=a*100+b*10+c;
		nr++;
	}
	sum-=a+b+c;
	n-=2;
	i=v[p2];
	s+=((n-i)/nr)*sum;
	a=p%10;
	p/=10;
	b=p%10;
	p/=10;
	c=p%10;
	for(i=n-(n-i)%nr;i<=n;i++){
		d=(c+(b*a)%10)%10;
		s+=d;
		a=b;
		b=c;
		c=d;
	}
	fprintf(g,"%ld\n",s);
	fclose(f);
	fclose(g);
	return 0;
}