Cod sursa(job #1689285)

Utilizator Ruxandra985Nanu Ruxandra Laura Ruxandra985 Data 14 aprilie 2016 09:05:48
Problema Multiplu Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.2 kb
#include <cstdio>

using namespace std;
int C[2000001],v[2000001],e[2000001],t[2000001],cif[2000001];
int main()
{
    FILE *fin=fopen ("multiplu.in","r");
    FILE *fout=fopen ("multiplu.out","w");
    int a,b,x,y,m,p,u,c,i,vec,ok=0,k;
    fscanf (fin,"%d%d",&a,&b);
    x=a;
    y=b;
    while (b>0){
        c=a%b;
        a=b;
        b=c;
    }
    m=x*y/a;
    p=1;
    u=1;
    C[1]=1;
    v[1]=1;
    while (p<=u){
        // pe poz C[p] e un rest. Din el,obtinem alte doua, pe care le punem la coada
        for (i=0;i<=1;i++){
            vec=(C[p]*10+i)%m;
            if (v[vec]==0){
                v[vec]=1;
                C[++u]=vec;
                t[u]=p;
                cif[u]=i;
                if (vec==0){
                    k=0;
                    while (u!=0){
                        //printf ("%d",cif[u]);
                        e[++k]=cif[u];
                        u=t[u];
                    }
                    ok=1;
                    break;
                }
            }
        }
        if (ok)
            break;
        p++;
    }
    fprintf (fout,"1");
    for (i=k-1;i>=1;i--)
        fprintf (fout,"%d",e[i]);
    return 0;
}