Cod sursa(job #114990)

Utilizator cos_minBondane Cosmin cos_min Data 16 decembrie 2007 10:06:11
Problema Multiplu Scor 10
Compilator cpp Status done
Runda preONI 2008, Runda 2, Clasele 11-12 Marime 1.01 kb
#include <stdio.h>
#include <fstream>
#include <vector>
using namespace std;

#define in "multiplu.in"
#define out "multiplu.out"
#define dim 19

int A, B, N, M;
int X[dim], NrC=0;

unsigned long long T;

inline int Maxim(int A, int B) { return A > B ? A : B; }

void Back(int);
void Try();

int main()
{
    freopen(in,"r",stdin);
    freopen(out,"w",stdout);
    
    scanf("%d%d", &A, &B);
    
    M = N = Maxim(A,B);   
    
    while ( M ) M /= 10, NrC++;
    
    int S = 0, K = 0;
    
    while ( S <= NrC ) K *= 10, K += 1, S++;
    
    if ( N > K ) NrC += 1;
    
    for ( ; NrC <= 18; NrC++ )
    {
        X[1] = 1;
        Back(2);
    }
}

void Back(int k)
{
     for ( int i = 0; i <= 1; i++ )
     {
         X[k] = i;
         if ( k == NrC ) Try();
         else            Back(k+1);
     }
}

void Try()
{
     T = 0;
     for ( int i = 1; i <= NrC; i++ )
     {
         T *= 10, T += X[i];
     }
     
     if ( T % A == 0 && T % B == 0 ) 
     {
          printf("%llu", T);
          exit(0);
     }
}