Cod sursa(job #2284016)

Utilizator CristeaCristianCristea Cristian CristeaCristian Data 16 noiembrie 2018 16:20:22
Problema Multiplu Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.31 kb
#include <fstream>

using namespace std;
ifstream fin("multiplu.in");
ofstream fout("multiplu.out");
const int NMAX=2000000;
struct MULTIPLU
{
    bool c;
    int r,t;
};
int cmmmc (int a,int b)
{
    int r,c1,c2;
    c1=a;
    c2=b;
    while(b)
    {
        r=a%b;
        a=b;
        b=r;
    }
    return (c1*c2)/a;
}
MULTIPLU q[NMAX+5];
bool f[NMAX+5];
int main()
{
    int a,b,m,p,u,sol=0,ok,r,i;
    fin>>a>>b;
    m=cmmmc(a,b);
    MULTIPLU temp;
    temp.c=1;
    temp.r=1;
    temp.t=0;
    p=u=1;
    q[u]=temp;
    ok=0;
    while(p<=u && !ok)
    {
        r=(q[p].r*10+0)%m;
        if(f[r]==0)
        {
            f[r]==1;
            temp.c=0;
            temp.r=r;
            temp.t=p;
            q[++u]=temp;
            if(r==0)
            {
                ok=1;
                continue;
            }
        }
        r=(q[p].r*10+1)%m;
        if(f[r]==0)
        {
            f[r]==1;
            temp.c=1;
            temp.r=r;
            temp.t=p;
            q[++u]=temp;
            if(r==0)
            {
                ok=1;
                continue;
            }
        }
        p++;
    }
    while(u!=0)
    {
        f[++sol]=q[u].c;
        u=q[u].t;
    }
    for(i=sol;i>=1;i--)
        fout<<f[i];
    return 0;
}