/*
	Za racunanje umnoska koristi se isti postupak kao i
	kod racunanja na papiru. Znamenke se pamte u nizu
	znamenki za svaki broj.
*/
#include <stdio.h>
#include <string.h>

#define MAX 100

int a[MAX], b[MAX], c[MAX*2];     // znamenke brojeva a, b i c
int za, zb;                       // broj znamenki brojeva a i b

int main()
{
	FILE *f;
	char s[MAX+1];
	int i, ia, ib, p;

	/* Citanje brojeva 'a' i 'b' */

	f = fopen("mnozenje.in", "rt");
	fscanf(f, "%s", s);
	za = strlen(s);
	for (i=0; i<za; i++) a[i] = s[za-i-1] - '0';
	fscanf(f, "%s", s);
	zb = strlen(s);
	for (i=0; i<zb; i++) b[i] = s[zb-i-1] - '0';
	fclose(f);

	/* Racunanje 'c' */

	for (i=0; i<za+zb; i++) c[i] = 0;
	for (ib=0; ib<zb; ib++)
		for (ia=0; ia<za; ia++)
		{	p = a[ia]*b[ib];
			c[ia+ib] += p % 10;
			c[ia+ib+1] += p / 10;
		}
	for (i=0; i<za+zb; i++)
	{	c[i+1] += c[i] / 10; // popravljanje prijenosa
		c[i] %= 10;
	}

	/* Ispis rezultata */

	f = fopen("mnozenje.out", "wt");
	for (i=za+zb-1; i>=0; i--)
		if (i<za+zb-1 || c[i]!=0)
			fprintf(f, "%c", c[i]+'0');
	fprintf(f, "\n");
	fclose(f);
	return 0;
}
