Cod sursa(job #598153)

Utilizator vlad.doruIon Vlad-Doru vlad.doru Data 24 iunie 2011 17:56:20
Problema Prod Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <fstream>

using namespace std;

ifstream in("prod.in");
ofstream out("prod.out");

int v[10],A[501],B[501],C[501];

int main(){
	int aux=0,alfa=9,i,j,t;
	for(i=1;i<=9;i++){
		in>>v[i];
	}
	while(1){
		if(v[alfa]!=0 && aux==0){
			A[0]++;
			A[1]=alfa;
			v[alfa]--;
			aux++;
		}
		if(v[alfa]!=0 && aux==1){
			B[0]++;
			B[1]=alfa;
			v[alfa]--;
			break;
		}
		if(v[alfa]==0)
			alfa--;
	}
	while(alfa>0){
		if(v[alfa]!=0 && aux==0){
			A[0]++;
			A[A[0]]=alfa;
			v[alfa]--;
			aux++;
			continue;
		}
		if(v[alfa]!=0 && aux==1){
			B[0]++;
			B[B[0]]=alfa;
			v[alfa]--;
			aux=0;
			continue;
		}
		if(v[alfa]==0)
			alfa--;
	}
	for(i=1;i<=A[0]/2;i++){
		aux=A[i];
		A[i]=A[A[0]-i+1];
		A[A[0]-i+1]=aux;
	}
	for(i=1;i<=B[0]/2;i++){
		aux=B[i];
		B[i]=B[B[0]-i+1];
		B[B[0]-i+1]=aux;
	}
	for (i = 1; i <= A[0]; i++)
	{
        for (t=0, j=1; j <= B[0] || t; j++, t/=10)
            C[i+j-1]=(t+=C[i+j-1]+A[i]*B[j])%10;
		if (i + j - 2 > C[0]) C[0] = i + j - 2;
	}
	for(i=C[0];i>0;i--){
		out<<C[i];
	}
	return 0;
}