Cod sursa(job #498810)

Utilizator unsilviuContvechidontdeactivatepls unsilviu Data 6 noiembrie 2010 10:11:38
Problema Prod Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <fstream>
int compara (int a[], int b[]) {
	int i;
	if (a[0]<b[0]) return 1; if(a[0]>b[0]) return 0;
	for (i=1; i<=a[0]; i++) {
		if (a[i]>b[i]) return 0;
        if (a[i]<b[i]) return 1; } }	
 int invers (int a[]) {
	 int u,v,aux;	 
	 u=1;
	 v=a[0]; 
	 while (u<v) {
		 aux=a[u];
		 a[u]=a[v];
		 a[v]=aux;
		 u++;
		 v--; } } 

void prod(int a[], int b[], int c[]) {
	int t,k,i,j; 
	t=0;
	for (i=1; i<=a[0]; i++)
		for (j=1; j<=b[0];j++)
			c[i+j-1]+=a[i]*b[j];
	k=a[0]+b[0]+1;
	for (i=1; i<=k; i++) {
		c[i]+=t;
		t=c[i]/10;
		c[i]%=10; }
	while (t) {
        k++;
		c[k]=t%10;
		t/=10; }
	c[0]=k; }	
	
 
 int i,j,v[9],x[9],n,a[1000],b[1000],p[10000];
 using namespace std;
int main() {
	
	ifstream f ("prod.in");
	ofstream g ("prod.out");
	for (i=1;i<10;i++) f>>v[i];
	for (i=9;i>0;i--) for (j=1;j<=v[i];j++) {
		x[n]=i;
		n=n+1; }
	for(i=1;i<n;i++) if (compara(a,b)==1) {
		a[0]++;
	    a[a[0]]=x[i]; }
		else {b[0]++; b[b[0]]=x[i]; }
	invers(a);
	invers(b);
    prod(a,b,p);
	for (i=p[0]; i>0; i--) g<<p[i];
	f.close();
	g.close();
	return 0; }