Cod sursa(job #307126)

Utilizator Addy.Adrian Draghici Addy. Data 23 aprilie 2009 09:27:52
Problema Nunta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <stdio.h>
#include <string.h>
#define dim 1000

int a[dim],b[dim],c[dim];
int n,w,i;

void suma(int A[], int B[], int C[]) {
  int i;
  for (i=A[0]+1; i<=B[0]; i++)
	A[i] = 0;
  for (i=B[0]+1; i<=A[0]; i++)
	B[i] = 0;
  int max = A[0]>B[0]?A[0]:B[0];
  int t = 0;
  for (i=1; i<=max; i++) {
	C[i] = (A[i] + B[i] + t) % 10;
	t = (A[i] + B[i] + t) / 10;
  }
  C[0] = max;
  if (t) {
	C[0]++;
	C[C[0]] = t;
  }
}

void atrib(int A[], int B[]) {
  memcpy(A,B,sizeof(int)*(B[0]+1));
}

int main() {
	
  FILE *f = fopen("nunta.in","r");
  FILE *g = fopen("nunta.out","w");
  
  fscanf(f,"%d",&n);

  a[0] = a[1] = 1;
  b[1] = 2;
  b[0] = 1;
  w = 2;
  
  if (n > 2) {
    while (w < n) {
	  w++;
	  suma(a,b,c);
	  atrib(a,b);
	  atrib(b,c);
    }	  
    for (i=c[0]; i>=1; i--)
	  fprintf(g,"%d",c[i]);
  }
  else 
    if (n==1)
	  fprintf(g,"1");
	else
	  fprintf(g,"2");
  
  
  fclose(f);
  fclose(g);	
	
  return 0;
}