Cod sursa(job #1576113)

Utilizator radiogard1999Dragoi Andrei radiogard1999 Data 22 ianuarie 2016 09:09:20
Problema Multiplu Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <fstream>
#include <bitset>
#define Nmax 2000005
using namespace std;
ifstream fin("multiplu.in");
ofstream fout("multiplu.out");

bitset <Nmax> r,cif;
int q[Nmax],p[Nmax],A,B,st,dr;

void Afisare(int i)
{
    if(i>0) {Afisare(p[i]);fout<<cif[i];}
}

int Cmmmc(int a,int b)
{
    int r,x,y;
    x=a;y=b;
    while(b!=0)
    {
        r=a%b;
        a=b;
        b=r;
    }
    return (x/a)*y;
}

int main()
{
    fin>>A>>B;
    fin.close();
    A=Cmmmc(A,B);
    st=1;dr=1;
    q[dr]=1;
    cif[1]=r[1]=1;
    p[1]=0;
    int x;
    while(true)
    {
        x=q[st];
        st++;
        x=x*10%A;
        if(r[x]==0)
        {
            q[++dr]=x;
            r[x]=1;
            cif[dr]=0;
            p[dr]=st-1;
        }
        if(x==0) break;
        x++;
        if(x==A) x=0;
        if(r[x]==0)
        {
            q[++dr]=x;
            r[x]=1;
            cif[dr]=1;
            p[dr]=st-1;
        }
        if(x==0) break;
    }
    Afisare(dr);
    fout.close();
    return 0;
}