Cod sursa(job #355768)

Utilizator mirunababliucMiruna Babliuc mirunababliuc Data 12 octombrie 2009 09:07:43
Problema Nunta Scor 20
Compilator cpp Status done
Runda CNRV #2 Marime 1.12 kb
#include <stdio.h>
int v[1000],w[1000],z[10000];
int main ()
{ FILE *f=fopen("nunta.in","r");
FILE *g=fopen("nunta.out","w");
int n,a,b,k=0,t,p=0,i;
fscanf (f,"%d",&n);
if (n==1) fprintf (g,"1");
else if (n==2) fprintf (g,"2");
	 else { v[1]=1;
			w[1]=2;
	        k=2;
			v[0]=1;
			w[0]=1;
			while (k<n)
				{ a=1;
			      b=1;
				  t=0;
				  p=0;
				  while (a<=v[0] && b<=v[0]) 
					  { if (v[a]+w[b]+t>9) { z[++p]=v[a]+w[b]+t-10;
				                           t=1;
										  }
					   else { z[++p]=v[a]+w[b];
					         t=0;
							}
					   a++;
					   b++;
					  }
				 while (a<=v[0]) { z[++p]=(v[a]+t)%10; 
								   if (v[a]+t>9) t=1;
				                   else t=0;
								   a++;
								 }
				 while (b<=w[0]) { z[++p]=(w[b]+t)%10;
				                   if (w[b]+t>9) t=1;
				                   else t=0;
								  b++;}
				 if (t>0) z[++p]=t;
				 for (i=1; i<=w[0]; i++) v[i]=w[i];
				 v[0]=w[0];
				 for (i=1; i<=p; i++) w[i]=z[i];
				 w[0]=p;
				 k++;
				}
			for (i=p; i>=1; i--)
				fprintf (g,"%d",z[i]);
		  }
fclose (f);
fclose (g);
return 0;
}