Pagini recente » Cod sursa (job #2080671) | Cod sursa (job #2294895) | Cod sursa (job #757325) | Cod sursa (job #2922806) | Cod sursa (job #115852)
Cod sursa(job #115852)
#include<stdio.h>
#include<stdlib.h>
struct nod{long int rest;nod *next;};
nod *prim,*ultim;
long int a,b,aa,bb,aux,m,d[2000002],c[2000002],k,x[2000002],l,i;
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;
prim=new nod;prim->rest=1;prim->next=0;ultim=prim;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;
nod *p,*u0,*u1;
r=prim->rest;
u0=new nod;u1=new nod;
r0=(prim->rest*10)%m;u0->rest=r0;u0->next=0;
if(!d[r0]){d[r0]=r;ultim->next=u0;ultim=u0;}
r1=(prim->rest*10+1)%m;u0->rest=r0;u0->next=0;
if(!d[r1]){d[r1]=r;c[r1]=1;ultim->next=u1;ultim=u1;}
p=prim;prim=prim->next;free(p);
}