Cod sursa(job #114996)

Utilizator blasterzMircea Dima blasterz Data 16 decembrie 2007 10:10:02
Problema Multiplu Scor 10
Compilator cpp Status done
Runda preONI 2008, Runda 2, Clasa a 10-a Marime 0.88 kb
#include <cstdio>
#include <cstdlib>
int a, b;
int x[32];
int N;

inline int mod(int a[], int b)
{
	int i, t=0;
	for(i=a[0]; i>0; --i)
		t=(t*10+a[i])%b;
	return t;
}

inline void afis(int a[])
{
	for(int i=a[0]; i; --i)printf("%d", a[i]);
	printf("\n");
}

inline void afis()
{

  //unsigned long long p=0;
  int i;

	int q[32];
	q[0]=0;
	for(i=N;i>=1;--i) q[++q[0]]=x[i];

	if(mod(q,a)==0 && mod(q, b)==0) 
	{
		afis(q);
		exit(0);
	}
/*
  
  for(i=1;i<=N;++i) p*=10, p+=x[i];


  if(p%a==0 && p%b==0) 
    {
      printf("%lld\n", p);
      exit(0);
    }
*/
}
void back(int k)
{
  if(k==N+1) afis();
  else
    {
     // if(k==1) {x[k]=1;back(k+1);}
     // else
	{
	  x[k]=0;
	  back(k+1);
	  x[k]=1;
	  back(k+1);
	}
    }
}

int main()
{
  freopen("multiplu.in","r",stdin);
   freopen("multiplu.out","w",stdout);
  scanf("%d %d\n", &a, &b);
x[1]=1;
 for(N=1;N<=22;++N)  back(2);

  return 0;
}