Cod sursa(job #1540284)

Utilizator isa_fares_mudiFares Mohamad isa_fares_mudi Data 2 decembrie 2015 16:10:29
Problema Multiplu Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <cstdio>
using namespace std;
struct CRT {
	bool c;
	int r, t;
};
int cmmmc ( int a, int b ){
	int r, ca, cb, cmmdc, rez;
	ca = a;
	cb = b;
	while ( b ){
		r = a % b;
		a = b;
		b = r;
	}
	cmmdc = a;
	rez = ca * cb / cmmdc;
	return rez;
}
CRT q[2000005];
bool viz[2000005], v[2000005];
int main()
{
    freopen ( "multiplu.in","r",stdin );
	freopen ( "multiplu.out","w",stdout );
    int a, b, m, ok = 0, p, u, rest, cif, pas, i, i1;
    scanf ( "%d%d",&a,&b );
    m = cmmmc ( a, b );
    q[1].c = 1;
    q[1].r = q[1].c % m;
    viz[q[1].r] = 1;
    p = 1;
    u = 1;
    pas = 0;
    while ( p <= u ){
		cif = 0;
		rest = ( q[p].r * 10 + cif ) % m;
		if ( !viz[rest] ){
			u++;	
			q[u].c = cif;
			q[u].r = rest;
			q[u].t = p;
			viz[rest] = 1;
			
		   if ( !rest )
			break;
		}
		cif = 1;
		rest = ( q[p].r * 10 + cif ) % m;
		if ( !viz[rest] ){
			u++;	
			q[u].c = cif;
			q[u].r = rest;
			q[u].t = p;
			viz[rest] = 1;
			if ( !rest )
				break;
		}
		p++;
    }
    i1 = 1;
    for ( i = u ; i >= 1 ; i = q[i].t )
		v[i1++] = q[i].c;
	i1--;
	for ( i = i1 ; i >= i ; i-- )
		printf ( "%d",v[i] );
    return 0;
}