Cod sursa(job #114991)

Utilizator MariusMarius Stroe Marius Data 16 decembrie 2007 10:07:16
Problema Multiplu Scor 20
Compilator cpp Status done
Runda preONI 2008, Runda 2, Clasa a 10-a Marime 0.8 kb
#include <stdio.h>

const char iname[] = "multiplu.in";
const char oname[] = "multiplu.out";

int solve(int cnt, int A, int B)
{
	int a;
	int b;
	int i, cntr, sup = 1 << (cnt - 1);

	for (cntr = 0; cntr < sup; ++ cntr) 
	{
		a = b = 1;
		for (i = cnt - 2; i >= 0; -- i) 
		{
			a = (a * 10 + ((cntr >> i) & 1)) % A;
			b = (b * 10 + ((cntr >> i) & 1)) % B;
		}
		if (a + b == 0) {
			printf("1");
			for (i = cnt - 2; i >= 0; -- i)
				printf("%d", ((cntr >> i) & 1));
			return 1;
		}
	}
	return 0;
}

int getCifre(int X) {
	int n = 0;
	while (X) n ++, X /= 10;
	return n;
}

int main(void)
{
	freopen(iname, "r", stdin);
	freopen(oname, "w", stdout);

	int A, B;
	scanf("%d %d", &A, &B);
	int cnt = getCifre(A);
	int tmp = getCifre(B);
	if (cnt < tmp)
		cnt = tmp;

	for (; !solve(cnt, A, B); cnt ++) ;
	return 0;
}