Cod sursa(job #260348)

Utilizator AndreiDDiaconeasa Andrei AndreiD Data 16 februarie 2009 22:30:03
Problema Patrate2 Scor 10
Compilator c Status done
Runda Arhiva de probleme Marime 1.14 kb
#include <stdio.h>   
#include <string.h>
  
#define Lmax 1024   
#define BASE 10   
  
  
//formula este (2^n*n)*n   
//unde n<=100   
int n;   
int sol[Lmax],sol1[Lmax];   
  
void citire()//citesc numarul   
{   
    freopen("patrate2.in","rt",stdin);   
    scanf("%d\n", &n);   
}   
  
 
void mul2(int A[])//inmultire cu 2   
{   
    int i, t;   
  
    for (i=1,t=0;i<=A[0] || t;++i,t/=BASE)   
        A[i]=(t+=2*A[i])%BASE;   
    A[0]=i-1;   
}   
  
  
void multiply(int a[], int b) 
{
	int i=0,t=0;
	for (i=1;i<=a[0] || t; ++i, t/=BASE)
		a[i]=(t+=a[i]*b)%BASE;
	a[0]=i-1;
}
  
void scrie(int A[])//afisez vectorul   
{   
    int i;   
       
    freopen("patrate2.out", "w", stdout);   
    for (i = A[0]; i; --i)
		printf("%d", A[i]);
}   
  
  
void solve()   
{   
    int i;   
//in sol1 l-am initializat pe n   
    //init(n);   
    sol[0]=sol[1]=1;   
    for (i=1;i<=n*n;++i)   
        mul2(sol);//2^n*n   
    multiply(sol,n);//inmultesc pe 2^n*n cu n   
    scrie(sol);//afisez rezultatul   
}   
  
int main()   
{   
  
    citire();   
    solve();   
    return 0;   
}