Pagini recente » Cod sursa (job #1327806) | Cod sursa (job #2643888) | Cod sursa (job #2942226) | Cod sursa (job #2467534) | Cod sursa (job #466678)
Cod sursa(job #466678)
#include <stdio.h>
#include <string.h>
#include <cmath>
using namespace std;
#define MAX 10001
int sir[MAX];
int nr1[MAX], nr2[MAX];
int n, i, j = 9, k;
long long a, b;
void mulmare (int A[], int B[]) // A <- A * B
{
int i, j, t, C[MAX]; // C <- A * B
memset(C, 0, sizeof(C));
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;
}
memcpy(A, C, sizeof(C)); // A <- C
}
int main ()
{
FILE *f = fopen ("prod.in","r");
FILE *g = fopen ("prod.out","w");
for (i=1; i<=9; ++i)
{
fscanf (f,"%d", &k);
while (k)
{
n ++;
k --;
sir[n] = i;
}
}
/*for (i=1; i<=n; ++i)
printf ("%d", sir[i]);*/
if (n % 2 == 0)
{
for (i=n; i>=1; --i)
if (i % 2 == 0)
a = a * 10 + sir[i];
else
b = b * 10 + sir[i];
//printf ("a = %lld\nb = %lld\n\n", a, b);
//printf ("a * b = %lld", a * b);
fprintf (g,"%lld", a * b);
}
else
{
for (i=n; i>=2; --i)
if (i % 2 != 0)
a = a * 10 + sir[i];
else
b = b * 10 + sir[i];
b = b * 10 + sir[1];
//printf ("a = %lld\nb = %lld\n\n", a, b);
//printf ("a * b = %lld", a * b);
fprintf (g,"%lld", a * b);
}
/* nr1[0] = 2;
nr1[1] = 1;
nr1[2] = 2;
nr2[0] = 1;
nr2[1] = 9;
mulmare(nr1, nr2);
for (i=nr1[0]; i>=1; --i)
printf ("%d", nr1[i]);*/
return 0;
}