Cod sursa(job #115855)

Utilizator anna_bozianuBozianu Ana anna_bozianu Data 17 decembrie 2007 03:15:16
Problema Multiplu Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include<stdio.h>
long int a,b,aa,bb,aux,m,d[2000002],c[2000002],k,x[2000002],l,i,coada[2000002],baza,varf;
void prel();
int main()
{
	FILE *f,*g;f=fopen("multiplu.in","r");g=fopen("multiplu.out","w");
	fscanf(f,"%ld%ld",&a,&b);
	aa=a;bb=b;
	while(bb){aa=aa%bb;aux=aa;aa=bb;bb=aux;}
	a=a/aa;m=a*b;
	coada[1]=1;baza=1;varf=1;c[1]=1;d[1]=-1;
	for(;;){prel();if(d[0])break;}
	k=0;
	do{l++;x[l]=c[k];k=d[k];}while(k!=-1);
	for(i=l;i>=1;i--)fprintf(g,"%ld",x[i]);
	fprintf(g,"\n");fcloseall();return 0;
}
void prel()
{       long int r,r0,r1;
	r=coada[baza];
	r0=(r*10)%m;
	if(!d[r0]){d[r0]=r;varf++;coada[varf]=r0;}
	r1=(r*10+1)%m;
	if(!d[r1]){d[r1]=r;c[r1]=1;varf++;coada[varf]=r1;}
        baza++;
}