Cod sursa(job #392169)

Utilizator Alexa_ioana_14Antoche Ioana Alexandra Alexa_ioana_14 Data 6 februarie 2010 21:52:21
Problema Multiplu Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include<cstdio>
#define N 20000001
#include<bitset>
using namespace std;
#include<queue>
bitset<N>viz(false);
int a,b,c,num;
int cmmdc(int a, int b)
{
	if (!b)
		return a;
	return cmmdc(b,a%b);
}
queue<int>q;
void bf()
{
	q.push(1);
	int p=0,u=1,x,y;
	while (p!=u)
	{
		x=q.front();
		++p;
		q.pop();
		y=x*10%c;
		++num;
		if (!y)
			return;
		q.push(y),viz[y]=1,++u;
		y=(x*10+1)%c;
		++num;
		if (!y)
			return;
		q.push(y),viz[y]=1,++u;
	}
}
void afis(int num)
{
	if (!num)
		return;
	if (num&1)
	{
		afis(num>>1);
		printf("0");
	}
	else
	{
		afis((num-1)>>1);
		printf("1");
	}
}
int main()
{
	freopen("multiplu.in","r",stdin);
	freopen("multiplu.out","w",stdout);
	scanf("%d%d",&a,&b);
	int p=a*b;
	c=p/cmmdc(a,b);
	bf();
	printf("1");
	afis(num);
	return 0;
}