Cod sursa(job #1821255)

Utilizator Kln1000Ciobanu Bogdan Kln1000 Data 2 decembrie 2016 20:39:14
Problema Nunta Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <cstring>
#include <cstdio>
struct hugeVal{
private:
    FILE*t=fopen("nunta.out","w");
    short index;
    static unsigned const short SIZE=0x100;
public:
    short num[SIZE]{0};
    inline hugeVal &operator = (hugeVal target){
        memcpy(num,target.num,SIZE);
        return *this;}
    inline hugeVal &operator += (hugeVal target){
        bool remainder=0;
        for (index=0;index<SIZE;++index){
            num[index]+=remainder+target.num[index];
            if (num[index]>9)
                remainder=1,num[index]%=10;
            else remainder=0;}
        return *this;
    }
    void print(){
        index=SIZE-1;
        while (!num[index]) --index;
        while (index>=0) fprintf(t,"%hd",num[index]),--index;
        }
};
int main()
{
    FILE*f=fopen("nunta.in","r");
    short n;
    fscanf(f,"%hd",&n);
    hugeVal a,b,aux;
    b.num[0]=1;
    LOOP:
        --n;
        aux=b;
        b+=a;
        a=aux;
        if (n>1) goto LOOP;
    b.print();
    return 0;
}