Cod sursa(job #1796291)

Utilizator circeanubogdanCirceanu Bogdan circeanubogdan Data 3 noiembrie 2016 11:57:49
Problema Multiplu Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.14 kb
#include <iostream>
#include <fstream>
#include <bitset>
using namespace std;
ifstream f("multiplu.in");
ofstream g("multiplu.out");
long long c;
int i,j,k,ok,a,aa,b,bb,r,p,u,t[1000];
bitset<2000010> viz;
struct abc
{
    int r,t,c; // x = restul, y = tata, z  =cifra
}d[2000010];
int main()
{
    f>>a>>b;
    aa=a;
    bb=b;
    while(a!=0)
    {
        r=b%a;
        b=a;
        a=r;
    }
    c=aa*bb/b;
    d[1].r=1;
    p=u=1;
    viz[1] = 1;
    while(p<=u)
    {
        for(i=0;i<=1;i++)
        {
            int rnext = (d[p].r*10+i)%c;
            if (viz[rnext] == 0) {
                viz[rnext] = 1;
                d[++u].r=rnext;
                d[u].t=p;
                d[u].c=i;
                if(rnext==0)
                {

                    while(u>=1)
                    {
                        t[++k]=d[u].c;
                        u=d[u].t;
                    }
                    g<<1;
                    for(i=k-1;i>=1;i--)
                        g<<t[i];

                    return 0;
                }
            }
        }
        p++;
    }
    return 0;
}