Cod sursa(job #258110)

Utilizator ConsstantinTabacu Raul Consstantin Data 14 februarie 2009 18:41:59
Problema Multiplu Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include<stdio.h>
struct cifra{int res,ant,c;}v[2000000];
int viz[2000000],i,j,k,l,m,n,a,b,cm,p,q;
FILE *g=fopen("multiplu.out","w");
void afis(cifra x){
if(!x.ant)
        {fprintf(g,"%d",x.c);
         return ;
         }
afis(v[x.ant]);
fprintf(g,"%d",x.c);
}
void fill()
{while(p<=q)
        {if(!viz[(v[p].res*10)%k])
                {v[++q].res=(v[p].res*10)%k;
                viz[v[q].res]=1;
                v[q].ant=p;
                v[q].c=0;
                if(!v[q].res)
                        return ;
                }
        if(!viz[(v[p].res*10+1)%k])
                {v[++q].res=(v[p].res*10+1)%k;
                viz[v[q].res]=1;
                v[q].ant=p;
                v[q].c=1;
                if(!v[q].res)
                        return;
                }
p++;}}

int main(){
FILE *f=fopen("multiplu.in","r");
fscanf(f,"%d%d",&a,&b);
fclose(g);

n=a;m=b;

while(b){

k=a%b;

a=b;b=k;}

k=(m*n)/a;
v[1].res=v[1].c=1;

p=1;q=1;

fill();

afis(v[q]);
fclose(g);
return 0;
}