Cod sursa(job #115725)

Utilizator mithyPopovici Adrian mithy Data 16 decembrie 2007 21:12:57
Problema Multiplu Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <stdio.h>
#define NMax 2000000

long A, B;
FILE *f, *g;

long long C[NMax], x;
int in, sf;

void citire();
void rez();
long cmmdc( long A, long B );

int main()
{
	citire();
	rez();
	return 0;
}
void rez()
{
	int i, j,ok;
	long M = A*B /cmmdc( A, B );
	

	C[0] = 1;
	while ( in <= sf )
	{
		x = C[in++];
		if ( x % M == 0 )
		{
			fprintf( g, "%lld\n", x );
			break;
		}
		for (i=in,ok=1; i<=sf && ok; i++)
			if ( ((x*10)%M) == C[i]%M )
				ok = 0;
		if ( ok ) C[++sf] = x*10;

		for (i=in,ok=1; i<=sf && ok; i++)
			if ( ((x*10+1)%M) == C[i]%M )
				ok = 0;
		if ( ok ) C[++sf] = x*10+1;
	}
}
long cmmdc( long A, long B )
{
	long R;

	while ( B )
	{
		R = A % B;
		A = B;
		B = R;
	}

	return A;
}
void citire()
{
	f = fopen( "multiplu.in", "rt" );
	g = fopen( "multiplu.out", "wt" );

	fscanf( f, "%ld %ld", &A, &B );
	fclose( f );
}