Cod sursa(job #592963)

Utilizator valentin.harsanValentin Harsan valentin.harsan Data 31 mai 2011 18:21:19
Problema Multiplu Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include<stdio.h>
#include<queue>
#define N 2000002
using namespace std;

queue<int> q;
int a,b,cif[N],u[N];
long long c;
bool ver[N];

int cmmdc(int a,int b) {
	int t;
	while(b) {
		t=a%b;
		a=b;
		b=t;
	}
	return a;
}

int cmmmc(int a,int b) {
	return (long long)a*b/cmmdc(a,b);
}

void afisare(int q) {
	if(u[q]!=0)
		afisare(u[q]);
	printf("%d",cif[q]);
}

int main() {
	long long a1,a2;
	freopen("multiplu.in","r",stdin);
	freopen("multiplu.out","w",stdout);
	scanf("%d%d",&a,&b);
	c=cmmmc(a,b);
	q.push(1); cif[1]=1; u[1]=0; ver[1]=true;
	while(!ver[0]) {
		a1=q.front();
		q.pop();
		a2=(a1*10)%c;
		if(!ver[a2]) {
			q.push(a2);
			ver[a2]=true;
			u[a2]=a1;
			cif[a2]=0;
		}
		a2=(a2+1)%c;
		if(!ver[a2]) {
			q.push(a2);
			ver[a2]=true;
			u[a2]=a1;
			cif[a2]=1;
		}
	}
	afisare(0);
	return 0;
}