Cod sursa(job #218857)

Utilizator alex23alexandru andronache alex23 Data 3 noiembrie 2008 20:09:33
Problema Nunta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.43 kb
#include <stdio.h>
#define NMAX 500

FILE *f = fopen("nunta.in", "r"), *g = fopen("nunta.out", "w");

int nr1[NMAX], nr2[NMAX];
int n;

int main()
 {
          
   fscanf(f, "%d", &n);
   fclose(f);
   
   if (n == 1) {fprintf(g, "1");
                fclose(g);
                return 0;
                }
   if (n == 2) {fprintf(g, "2");
                fclose(g);
                return 0;
                }
   
   nr1[1] = 1;
   nr2[1] = 2;
   nr1[0] = nr2[0] = 1;
   for (int i = 3; i <= n; i++)
       {//aduna nr1 + nr2
        if (i % 2) //i impar le adunam si le punem in nr1
             {int t = 0, j;
              for (j = 1; j <= nr1[0] || j <= nr2[0] || t; j++, t /= 10)
                    nr1[j] = (t += nr1[j] + nr2[j]) % 10;
              nr1[0] = j - 1;      
             }
           else //i par le aduanm si la punem in nr2
             {int t = 0, j;
              for (j = 1; j <= nr1[0] || j <= nr2[0] || t; j++, t /= 10)
                     nr2[j] = (t += nr1[j] + nr2[j]) % 10;
              nr2[0] = j - 1;       
             }      
        }
    
   if (n % 2) 
       {for (int j = nr1[0]; j >= 1; j--)
            fprintf(g, "%d", nr1[j]);
        fclose(g);
        return 0;
       } 
   
   for (int j = nr2[0]; j >= 1; j--)
       fprintf(g, "%d", nr2[j]);
   fclose(g);
   return 0;
 }