Cod sursa(job #115084)

Utilizator ScrazyRobert Szasz Scrazy Data 16 decembrie 2007 10:42:57
Problema Multiplu Scor 10
Compilator cpp Status done
Runda preONI 2008, Runda 2, Clasa a 10-a Marime 0.88 kb
#include <stdio.h>

long a, b;

inline long cmmdc(long x, long y)
{
    long r;
    while (y) {r=x%y; x=y; y=r;}
    return x;
}

int jo(long long a)
{
    while (a)
    {
	if (a%10==0 || a%10==1); 
        else return 0;
	a/=10;
    }
    return 1;
}

int main()
{
    freopen("multiplu.in","r",stdin);
    freopen("multiplu.out","w",stdout); 
    
    scanf("%ld %ld", &a, &b);
    //long x=a, y=b;
    long cmmmc=a*b/cmmdc(a,b);
    long long nr=cmmmc; 
    long long n=1;
    long long k=1;
    int ok=1; 

    while (nr>n) 
    {
	n=n*10;
	k=k*10+1;
    }
    
    while (nr<k)
	k/=10; 

    while (ok)
    {
	if (jo(nr)) ok=0;
	else
	{
	    
	    long c=n/nr;
	    nr*=c;
	    if (jo(nr)) ok=0; 
	    while (nr<k*10+1 && ok)
	    {
		nr+=cmmmc;
		if (jo(nr)) ok=0;
	    }
	    k=k*10+1;
	    n=n*10;
	}
    } 

    printf("%lld", nr); 

    fclose(stdin);
    fclose(stdout);
    return 0;
}