Cod sursa(job #2025825)

Utilizator Ruxandra985Nanu Ruxandra Laura Ruxandra985 Data 23 septembrie 2017 12:43:37
Problema Prod Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.47 kb
#include <cstdio>

using namespace std;
int f[10];
int nr1[1001];
int nr2[1001];
int v[2][1001],s;
void mutadr (int v[]){
    int i;
    for (i=v[0]-1;i>0;i--)
        v[i+1]=v[i];
}
void mutast (int v[]){
    int i;
    for (i=2;i<=v[0];i++)
        v[i-1]=v[i];
}
void prod (int k){
    int i,t=0,j;
    v[k][0]=nr1[0]+nr2[0]-1;
    for (i=1;i<=nr1[0]+nr2[0];i++)
        v[k][i]=0;
    for (i=1;i<=nr1[0];i++)
        for (j=1;j<=nr2[0];j++)
            v[k][i+j-1]+=nr1[i]*nr2[j];
    for (i=1;i<=v[k][0];i++){
        v[k][i]+=t;
        t=v[k][i]/10;
        v[k][i]%=10;
    }
    if (t)
        v[k][++v[k][0]]=t;
}
int main()
{
    FILE *fin=fopen ("prod.in","r");
    FILE *fout=fopen ("prod.out","w");
    int i,cf1,c;
    s=0;
    for (i=1;i<=9;i++){
        fscanf (fin,"%d",&f[i]);
        s+=f[i];
    }
    i=9;
    nr1[0]++;
    nr2[0]++;
    while (f[i]==0)
        i--;
    nr1[1]=i;
    f[i]--;
    while (f[i]==0)
        i--;
    nr2[1]=i;
    f[i]--;
    c=2;
    s-=2;
    while (s>0){
        while (f[i]==0)
            i--;
        cf1=i;
        f[i]--;
        if (c==2){
            nr2[0]++;
            mutadr(nr2);
            nr2[1]=cf1;
            c=1;
        }
        else {
            nr1[0]++;
            mutadr(nr1);
            nr1[1]=cf1;
            c=2;
        }
        s--;
    }
    prod (0);
    for (i=v[0][0];i>0;i--)
        fprintf (fout,"%d",v[0][i]);
    return 0;
}