Cod sursa(job #2323662)

Utilizator adimiclaus15Miclaus Adrian Stefan adimiclaus15 Data 19 ianuarie 2019 15:04:53
Problema Multiplu Scor 70
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.31 kb
#include <iostream>
#include <fstream>
#include <queue>
using namespace std;
ifstream f("multiplu.in");
ofstream g("multiplu.out");
int a,b,m,tata[3000005],x,poz,coada[2000005],prim,ultim;
bool viz[2000005],cifra[3000005];
int cmmdc(int a,int b)
{
    int r;
    while(b!=0)
    {
        r=a%b;
        a=b;
        b=r;
    }
    return a;
}
void afisare(int poz)
{
    if(poz!=1)
    {
        afisare(tata[poz]);
    }
    g<<cifra[poz];
}
int main()
{
    f>>a>>b;
    prim=ultim=1;
    coada[prim]=1;
    viz[1]=1;
    m=a*b/cmmdc(a,b);
    cifra[prim]=1;
    tata[1]=-1;
    coada[prim]=1;
    while(viz[0]==0 && prim<=ultim)
    {
        x=coada[prim];
        viz[x]=0;
        if(viz[(x*10)%m]==0)
        {
            viz[(x*10)%m]=1;
            ultim++;
            coada[ultim]=(x*10)%m;
            tata[ultim]=prim;
            cifra[ultim]=0;
        }
        if(viz[0]==1)
        {
            poz=ultim;
            break;
        }
        if(viz[(x*10+1)%m]==0)
        {
            viz[(x*10+1)%m]=1;
            ultim++;
            coada[ultim]=(x*10+1)%m;
            tata[ultim]=prim;
            cifra[ultim]=1;
        }
        if(viz[0]==1)
        {
            poz=ultim;
        }
        prim++;
    }
    afisare(poz);
    return 0;
}