Cod sursa(job #873618)

Utilizator CostanMiriamCostan Miriam CostanMiriam Data 7 februarie 2013 14:49:56
Problema Multiplu Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <fstream>
#define DIM 2000010

using namespace std;

char x[DIM];
int c[DIM];
char v[DIM];
int t[DIM];
char sol[DIM];

int p, u, a, b, m, r, i, j, k, stop;



ifstream fin("multiplu.in");
ofstream fout("multiplu.out");

int main() {
	fin>>a>>b;
	m = a*b;
	while (b) {
		r = a%b;
		a = b;
		b = r;
	}

	m/=a;


	c[1] = 1;
	p = u = 1;
	v[1] = 1;
	x[1] = 1;
	t[1] = 0;
	while (p<=u && !stop) {
		//ce pot pune din c[p]
		for (i=0;i<=1;i++) {
			r = (c[p]*10 + i) % m;
			if (v[r] == 0) {
				u++;
				c[u] = r;
				v[r] = 1;
				x[u] = i;
				t[u] = p;
			}
			if (c[u] == 0) {
				stop = 1;
				break;
			}
		}
		p++;
	}

	while (u!=0) {
		sol[++k] = x[u];
		u = t[u];
	}

	for (i=k;i>=1;i--)
		fout<<(char)(sol[i] + '0');
	fout<<"\n";
	return 0;

}