Cod sursa(job #114936)

Utilizator MaGdUtZaVasile Maria-Magdalena MaGdUtZa Data 16 decembrie 2007 09:39:44
Problema Multiplu Scor 0
Compilator cpp Status done
Runda preONI 2008, Runda 2, Clasele 11-12 Marime 1.25 kb
#include<stdio.h>
#include<string.h>

#define dim 1001

typedef int Huge[dim];

void scrie(Huge a);

long impartire(Huge a, long b);

void conversie(char s[dim], Huge a);

void mutare(Huge a, Huge c);

long r,n,i,l,j,k,m,p,kkt;

int main()
{
	freopen("multiplu.in","r",stdin);
	freopen("multiplu.out","w",stdout);

	Huge a,b,c;

	scanf("%ld%ld", &n, &m);

	p=n*m;

	do
	{
		r=n%m;

		n=m;

		m=r;
	}while(r);

	kkt=p/n;

        n=kkt;

	l=0;

	for(i=1; i<=n; ++i)
	{
		a[0]=i;

		for(j=1; j<=a[0]; ++j)

			a[j]=1;

		mutare(a,c);

		impartire(a,n);

		r=impartire(c,n);

		b[++l]=r;
	}
	for(i=1; i<=n; ++i)

		if(b[i]==0)
		{
			for(j=1; j<=i; ++j)

				printf("1");

			return 0;
		}
	for(i=1; i<n; ++i)

		for(j=i+1; j<=n; ++j)
		{
			if(b[i]==b[j])
			{
				for(k=1; k<=j-i; ++k)

					printf("1");

				for(k=1; k<=i; ++k)

					printf("0");
				return 0;
			}
		}
	return 0;

}
long impartire(Huge a, long n)
{
	long r=0,i;

	for(i=a[0]; i; --i)
	{

		r=10*r+a[i];

		a[i]=r/n;

		r%=n;
	}
	while(!a[a[0]] && a[0]>1)

		--a[0];

	return r;

}
void mutare(Huge a, Huge c)
{
	int i;

	for(i=1; i<=a[0]; ++i)

		c[i]=a[i];

	c[0]=a[0];
}