Cod sursa(job #910535)

Utilizator gabrielinelusGabriel-Robert Inelus gabrielinelus Data 10 martie 2013 20:19:27
Problema Patrate2 Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.17 kb
#include<iostream>
#include<fstream>
#include <cstdio>
using namespace std;
ifstream fin("patrate2.in");
FILE *g=fopen("patrate2.out","w");
int N;
struct nr_mare
{
    int cif[10000],nc;
    nr_mare operator=(int b)
    {
        nc=0;
        while(b)
        {
            cif[nc++]=b%10;
            b/=10;
        }
        return *this;
    }
    friend nr_mare operator*(nr_mare a,int b);
    friend ostream& operator<<(ostream &out,nr_mare &n);
};
ostream& operator<<(ostream &out,nr_mare &n)
{
    int i=n.cif[0];
    while(i)
        out<<n.cif[i--];
    return out;
}
nr_mare operator*(nr_mare a,int b)
{
    int carry=0;
    for(int i=1;i<=a.cif[0];i++)
    {
        int y=a.cif[i]*b+carry;
        a.cif[i]=y%10;
        carry=y/10;
    }
    while(carry>0)
    {
        ++a.cif[0];
        a.cif[a.cif[0]]=carry%10;
        carry=carry/10;
    }
    return a;
}
nr_mare a;
int main()
{

    fin>>N;
    a=11;
    int c=(N*N)/15,b=(N*N)%15,i;
    for(i=1;i<=c;i++)
        a=a*(32768);
    a=a*(1<<b);
    for(i=1;i<=N;i++)
        a=a*i;
    for(i=a.cif[0];i>0;i--)
        fprintf(g,"%d",a.cif[i]);

    return 0;
}