Cod sursa(job #1642830)

Utilizator Emy1337Micu Emerson Emy1337 Data 9 martie 2016 16:24:10
Problema Multiplu Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.33 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#include <string.h>
#include <queue>
#include <vector>
#include <stack>
#include <ctype.h>
#include <cmath>
using namespace std;
ifstream fin("multiplu.in");
ofstream fout("multiplu.out");

const int MAXN=2e6+5;
int f[MAXN],cifra[MAXN],deLa[MAXN];
int a,b,div1;

vector<int> sol;

int cmmdc(int a, int b)
{
    while(a%b!=0)
    {
        int r=a%b;
        a=b;
        b=r;
    }
    return b;
}

int cmmmc(int a, int b)
{
    return a*b/cmmdc(a,b);
}

void solve()
{

    queue < int > q;
    q.push(1);
    while(!q.empty())
    {
        int rest= q.front();
        q.pop();

        if(rest == 0) break;

        for(int i=0; i<=1; i++)
        {
            int restNou=(rest*10+i)%div1;

            if(!f[restNou])
            {
                f[restNou]=1;
                deLa[restNou]=rest;
                cifra[restNou]=i;
                q.push(restNou);
            }
        }
    }
}


int main()
{

    fin>>a>>b;
    div1=cmmmc(a,b);
    solve();
    if(f[0])
    {
        int rest = 0;
        while (rest != 1)
        {
            sol.push_back(cifra[rest]);
            rest=deLa[rest];
        }
        fout<<1;
        for(int i=sol.size()-1; i>=0; i--) fout<<sol[i];

    }




}