Pagini recente » Borderou de evaluare (job #2637588) | Cod sursa (job #1988289) | Borderou de evaluare (job #2547639) | Borderou de evaluare (job #907121) | Cod sursa (job #1521403)
#include <stdio.h>
#define lim 2000000
#define NUL -1
int st[lim],prev[lim];
char fr[lim],val[lim];
int cmmdc(int a,int b){
int r;
while(b!=0){
r=a%b;
a=b;
b=r;
}
return a;
}
int main(){
FILE *fin,*fout;
fin=fopen("multiplu.in","r");
fout=fopen("multiplu.out","w");
int a,b,m,bg,ed,pp,nxt;
fscanf(fin,"%d%d",&a,&b);
m=a*b/cmmdc(a,b);
bg=1;
ed=1;
st[1]=1;
fr[1]=1;
prev[1]=NUL;
pp=0;
while(pp==0){
nxt=(st[bg]*10+0)%m;
if(fr[nxt]==0){
ed++;
prev[ed]=bg;
st[ed]=nxt;
val[ed]=0;
fr[nxt]=1;
}
if(nxt==0)
pp=ed;
nxt=(st[bg]*10+1)%m;
if(fr[nxt]==0){
ed++;
prev[ed]=bg;
st[ed]=nxt;
val[ed]=1;
fr[nxt]=1;
}
if(nxt==0)
pp=ed;
bg++;
}
ed=0;
while(prev[pp]!=NUL){
ed++;
fr[ed]=val[pp];
pp=prev[pp];
}
ed++;
fr[ed]=1;
for(bg=ed;bg>=1;bg--)
fprintf(fout,"%d",fr[bg]);
fclose(fin);
fclose(fout);
return 0;
}